Rainbond/util/http/README.md

77 lines
4.6 KiB
Markdown

### 用法实例
```
type User struct {
Username string `validate:"username|required|between:3,8"`
Email string `validate:"email|email"`
Web string `validate:"web|url"`
Age int `validate:"age|numeric_between:18,55"`
}
func handler(w http.ResponseWriter, r *http.Request) {
var user User
messages := validator.MapData{
"username": []string{"required:You must provide username", "between:username must be between 3 to 8 chars"},
"web": []string{"url:You must provide a valid url"},
}
if !httputil.ValidatorRequestStructAndErrorResponse(r, w, &user, messages) {
return
}
httputil.ReturnSuccess(r, w, user)
}
func handlerMap(w http.ResponseWriter, r *http.Request) {
rule := validator.MapData{
"username": []string{"required", "between:3,5"},
"web": []string{"url"},
}
messages := validator.MapData{
"username": []string{"required:You must provide username", "between:username must be between 3 to 8 chars"},
"web": []string{"url:You must provide a valid url"},
}
data, ok := httputil.ValidatorRequestMapAndErrorResponse(r, w, rule, messages)
if !ok {
return
}
httputil.ReturnSuccess(r, w, data)
}
```
### Validation Rules
* `alpha` The field under validation must be entirely alphabetic characters.
* `alpha_dash` The field under validation may have alpha-numeric characters, as well as dashes and underscores.
* `alpha_num` The field under validation must be entirely alpha-numeric characters.
* `numeric` The field under validation must be entirely numeric characters.
* `numeric_between:int,int` The field under validation must be a numeric value between the range.
e.g: `numeric_between:18,65` may contains numeric value like `35`, `55`
* `bool` The field under validation must be able to be cast as a boolean. Accepted input are `true, false, 1, 0, "1" and "0"`.
* `credit_card` The field under validation must have a valid credit card number. Accepted cards are `Visa, MasterCard, American Express, Diners Club, Discover and JCB card`
* `coordinate` The field under validation must have a value of valid coordinate.
* `css_color` The field under validation must have a value of valid CSS color. Accepted colors are `hex, rgb, rgba, hsl, hsla` like `#909, #00aaff, rgb(255,122,122)`
* `date` The field under validation must have a valid date of format yyyy-mm-dd or yyyy/mm/dd.
* `date:dd-mm-yyyy` The field under validation must have a valid date of format dd-mm-yyyy.
* `digits:int` The field under validation must be numeric and must have an exact length of value.
* `digits_between:int,int` The field under validation must be numeric and must have length between the range.
e.g: `digits_between:3,5` may contains digits like `2323`, `12435`
* `email` The field under validation must have a valid email.
* `float` The field under validation must have a valid float number.
* `in:foo,bar` The field under validation must have one of the values. e.g: `in:admin,manager,user` must contain the values (admin or manager or user)
* `min:int` The field under validation must have a min length of characters.
e.g: `min:3` may contains characters minimum length of 3 like `"john", "jane", "jane321"` but not `"mr", "xy"`
* `max:int` The field under validation must have a max length of characters.
e.g: `max:6` may contains characters maximum length of 6 like `"john doe", "jane doe"` but not `"john", "jane"`
* `not_in:foo,bar` The field under validation must have one value except foo,bar. e.g: `not_in:admin,manager,user` must not contain the values (admin or manager or user)
* `len:int` The field under validation must have an exact length of characters.
e.g: `len:4` may contains characters exact length of 4 like `Food, Mood, Good`
* `ip` The field under validation must be a valid IP address.
* `ip_v4` The field under validation must be a valid IP V4 address.
* `ip_v6` The field under validation must be a valid IP V6 address.
* `json` The field under validation must be a valid JSON string.
* `lat` The field under validation must be a valid latitude.
* `lon` The field under validation must be a valid longitude.
* `regex:regurlar expression` The field under validation validate against the regex. e.g: `regex:^[a-zA-Z]+$` validate the letters.
* `required` The field under validation must be present in the input data and not empty. A field is considered "empty" if one of the following conditions are true: 1) The value is null. 2)The value is an empty string.
* `url` The field under validation must be a valid URL.
* `uuid` The field under validation must be a valid UUID.
* `uuid_v3` The field under validation must be a valid UUID V3.
* `uuid_v4` The field under validation must be a valid UUID V4.
* `uuid_v5` The field under validation must be a valid UUID V5.