ããŒã¿æ€èšŒã©ã€ãã©ãªã§çºçããäž»ãªåé¡
åé¡çªå·1ã å€ãã®ããªããŒã¿ãŒã¯ãæ€èšŒã«ãŒã«ãèšè¿°ãããŠããããŒã¿ã®ã¿ãæ€èšŒããŸãã ç§ã«ãšã£ãŠãæ瀺çã«èš±å¯ãããŠããªããŠãŒã¶ãŒå ¥åã¯ç¡èŠãããããšãéèŠã§ãã ã€ãŸããããªããŒã¿ãŒã¯ãæ€èšŒã«ãŒã«ãèšè¿°ãããŠããªããã¹ãŠã®ããŒã¿ãåãåºãå¿ èŠããããŸãã ããã¯åã«åºæ¬çãªèŠä»¶ã§ãã
åé¡çªå·2ã æ€èšŒã«ãŒã«ã®æé 説æã æ¯åæ€èšŒã¢ã«ãŽãªãºã ã«ã€ããŠèããã®ã§ã¯ãªããæ£ããããŒã¿ãã©ã®ããã«èŠãããã宣èšçã«èª¬æãããã ãã§ãã åºæ¬çã«ãããŒã¿ã¹ããŒã ãå®çŸ©ãããïŒæçš¿ã®æåŸã«ãJSONã¹ããŒããã§ã¯ãªãçç±ïŒã
åé¡çªå·3ã ã³ãŒãã®åœ¢åŒã§ã®æ€èšŒã«ãŒã«ã®èª¬æã ããã¯ããã»ã©æããªãããã«æããŸãããæ€èšŒã«ãŒã«ãã·ãªã¢ã«åããããã¯ãšã³ããšããã³ããšã³ãã§åãæ€èšŒã«ãŒã«ã䜿çšããããšãããã¹ãŠã®è©Šã¿ãå³åº§ã«ç¡å¹ã«ããŸãã
åé¡çªå·4 ã æ€èšŒã¯ãšã©ãŒã§æåã®ãã£ãŒã«ãã§åæ¢ããŸãã ãã®æ¹æ³ã§ã¯ããã©ãŒã å ã®ãã¹ãŠã®ãšã©ãŒ/å¿ é ãã£ãŒã«ããããã«åŒ·èª¿è¡šç€ºããããšã¯ã§ããŸããã
åé¡çªå·5ã æšæºåãããŠããªããšã©ãŒã¡ãã»ãŒãžã ããšãã°ãããã£ãŒã«ãåãå¿ èŠã§ããã ããã€ãã®çç±ã§ããŠãŒã¶ãŒã«ãã®ãããªãšã©ãŒã衚瀺ã§ããŸããã
- ã€ã³ã¿ãŒãã§ã€ã¹ã®ãã£ãŒã«ãã¯ããŸã£ããç°ãªãæ¹æ³ã§åŒã³åºãããšãã§ããŸã
- ã€ã³ã¿ãŒãã§ã€ã¹ã¯è±èªã§ã¯ãªãå¯èœæ§ããããŸã
- ãšã©ãŒã®ã¿ã€ããåºå¥ããå¿ èŠããããŸãã ããšãã°ãç¹å¥ãªæ¹æ³ã§ç©ºã®å€ã®ãšã©ãŒã衚瀺ããŸã
ã€ãŸãããšã©ãŒã¡ãã»ãŒãžã§ã¯ãªããæšæºåããããšã©ãŒã³ãŒããè¿ãå¿ èŠããããŸãã
åé¡çªå·6ã æ°å€ãšã©ãŒã³ãŒãã 䜿çšããã®ã¯åã«äžäŸ¿ã§ãã ãšã©ãŒã³ãŒããçŽæçã«ãããã§ãã ãšã©ãŒã³ãŒããREQUIREDãã¯ã³ãŒãã27ããããç解ããããããšã«åæããŸãã ããžãã¯ã¯ãäŸå€ã¯ã©ã¹ã®æäœã«äŒŒãŠããŸãã
åé¡çªå·7ã éå±€ããŒã¿æ§é ã確èªããæ¹æ³ã¯ãããŸããã ä»æ¥ãããŸããŸãªJSON APIã®æ代ã«ã¯ããããªãã§ã¯ã§ããŸããã éå±€ããŒã¿èªäœã®æ€èšŒã«å ããŠãåãã£ãŒã«ãã®ãšã©ãŒã³ãŒããè¿ãå¿ èŠããããŸãã
åé¡çªå·8ã éãããã«ãŒã«ã®ã»ããã æšæºã«ãŒã«ã¯åžžã«äžè¶³ããŠããŸãã ããªããŒã¿ã¯æ¡åŒµå¯èœã§ãè€éãªã«ãŒã«ãè¿œå ã§ããããã«ããå¿ èŠããããŸãã
åé¡çªå·9ã 責任ã®ç¯å²ãåºãããã ããªããŒã¿ãŒã¯ãã©ãŒã ãçæããŠã¯ãªãããã³ãŒããçæããŠã¯ãªãããæ€èšŒä»¥å€ã¯äœããã¹ãã§ã¯ãããŸããã
åé¡çªå·10ã è¿œå ã®ããŒã¿åŠçãå®è¡ã§ããªãã ã»ãšãã©åžžã«ãæ€èšŒãããå Žåãè¿œå ã®ïŒå€ãã®å ŽåäºåçãªïŒããŒã¿åŠçãå¿ èŠã§ãïŒçŠæ¢æåãåãåããå°æåãäœåãªã¹ããŒã¹ãåé€ããŸãã ç¹ã«éèŠãªã®ã¯ãè¡é ãšè¡æ«ã®ã¹ããŒã¹ã®åé€ã§ãã 99ïŒ ã®ã±ãŒã¹ã§ã¯ãå¿ èŠãããŸããã ããªããŒã¿ãŒã¯æ€èšŒä»¥å€ã®ããšãããŠã¯ãªããªããšåã«èšã£ãããšãç¥ã£ãŠããŸãã
3幎åãäžèšã®ãã¹ãŠã®åé¡ãæ±ããŠããªãããªããŒã¿ãŒãäœæããããšã決å®ãããŸããã ãã®ãããLIVRïŒLanguage Independent Validation RulesïŒããããŸããã PerlãPHPãJavaScriptãPythonã®å®è£ ããããŸãïŒç§ãã¡ã¯pythonã§æžããŠããŸãã-ããã«ã€ããŠã®ãã£ãŒãããã¯ã¯ã§ããŸããïŒã ããªããŒã¿ãŒã¯ãäŒç€Ÿã®ã»ãŒãã¹ãŠã®ãããžã§ã¯ãã§æ°å¹Žã«ããã£ãŠæ¬çªç°å¢ã§äœ¿çšãããŠããŸãã ããªããŒã¿ã¯ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã§æ©èœããŸãã ããªããŒã¿ãŒã¯webbylab.github.io/livr-playgroundã§è©Šãããšãã§ããŸãã
éèŠãªã¢ã€ãã¢ã¯ãããªããŒã¿ãŒã®ã³ã¢ã¯æå°éã§ããã¹ãã§ãããæ€èšŒã®ããžãã¯å šäœãã«ãŒã«å ã«ãããšããããšã§ãïŒãããããããã®å®è£ ã«ãããŸãïŒã ã€ãŸããããªããŒã¿ãŒã§ã¯ããå¿ é ãïŒå€ã®ååšããã§ãã¯ïŒããmax_lengthãïŒæ倧é·ããã§ãã¯ïŒããto_lcãïŒããŒã¿ãå°æåã«ããïŒããlist_of_objectsãïŒãã£ãŒã«ãã®ã«ãŒã«ã説æããã®ã«åœ¹ç«ã¡ãŸãïŒã®éã«éãã¯ãããŸãããªããžã§ã¯ãã®é åïŒã
èšãæããã°ãããªããŒã¿ãŒã¯äœãç¥ããŸããïŒ
- ãšã©ãŒã³ãŒãã«ã€ããŠ
- éå±€ãªããžã§ã¯ããæ€èšŒããæ¹æ³ãç¥ã£ãŠããããš
- 圌ãããŒã¿ãå€æ/æ¶å»ã§ããããš
- ä»ã®å€ãã®ããšã«ã€ããŠ
ããã¯ãã¹ãŠæ€èšŒèŠåã®è²¬ä»»ã§ãã
LIVRä»æ§
ã¿ã¹ã¯ã¯ãããªããŒã¿ãããã°ã©ãã³ã°èšèªãã€ãŸãå£ã²ã/ãã³ãã«ããŒããç¬ç«ãããããšã§ããããããŒã¿æ€èšŒã®äžçã§ã®ã¿ãä»æ§ãæžãããšããå§ããŸããã
ä»æ§ã®ç®çïŒ
- ããŒã¿èšè¿°åœ¢åŒãæšæºåããŸãã
- åå®è£ ã§ãµããŒãããå¿ èŠãããæ€èšŒã«ãŒã«ã®æå°ã»ããã説æããŸãã
- ãšã©ãŒã³ãŒããæšæºåããŸãã
- ãã¹ãŠã®å®è£ ã®ããã®åäžã®åºæ¬ææžã§ããã
- å®è£ ãä»æ§ã«æºæ ããŠãããã©ããã確èªã§ããäžé£ã®ãã¹ãããŒã¿ãçšæããŸãã
ä»æ§ã¯livr-spec.orgã§å ¥æã§ããŸãã
äž»ãªã¢ã€ãã¢ã¯ãæ€èšŒã«ãŒã«ã®èª¬æã¯ããŒã¿ã¹ããŒã ã®ããã«èŠããã«ãŒã«å€ã§ã¯ãªãããŒã¿ã«ã§ããã ãé¡äŒŒããŠããããšã§ãã
æ¿èªãã©ãŒã ã®æ€èšŒèŠåã®èª¬æã®äŸïŒ ã㢠ïŒïŒ
{ email: ['required', 'email'], password: 'required' }
ç»é²ãã©ãŒã ã®æ€èšŒèŠåã®äŸïŒ demo ïŒïŒ
{ name: 'required', email: ['required', 'email'], gender: { one_of: ['male', 'female'] }, phone: {max_length: 10}, password: ['required', {min_length: 10} ] password2: { equal_to_field: 'password' } }
ãã¹ãããããªããžã§ã¯ãã®æ€èšŒã®äŸïŒ demo ïŒïŒ
{ name: 'required', phone: {max_length: 10}, address: { 'nested_object': { city: 'required', zip: ['required', 'positive_integer'] }} }
æ€èšŒã«ãŒã«
æ€èšŒã«ãŒã«ã¯ã©ã®ããã«èšè¿°ãããŸããïŒ åã«ãŒã«ã¯ååãšåŒæ°ã§æ§æããïŒã»ãŒé¢æ°åŒã³åºãã®ããã«ïŒãäžè¬çã«æ¬¡ã®ããã«èšè¿°ãããŸã{"RULE_NAME"ïŒARRAY_OF_ARGUMENTS}ã åãã£ãŒã«ãã«ã¯ãé çªã«é©çšãããã«ãŒã«ã®é åãèšè¿°ãããŠããŸãã
äŸãã°
{ "login": [ { length_between: [ 5, 10 ] } ] }
ã€ãŸããããã°ã€ã³ããã£ãŒã«ããšã2ã€ã®åŒæ°ïŒã5ããšã10ãïŒãæã€ãlength_betweenãã«ãŒã«ããããŸãã ããã¯æãå®å šãªåœ¢åŒã§ããã次ã®åçŽåãèš±å¯ãããŠããŸã
- ãã£ãŒã«ãã«1ã€ã®ã«ãŒã«ãããå Žåãé åã¯ãªãã·ã§ã³ã§ã
- ã«ãŒã«ã«åŒæ°ã1ã€ããå Žåããããæž¡ãããšãã§ããŸãïŒé åã«ãã¬ãŒãã³ã°ããããšãªãïŒ
- ã«ãŒã«ã«åŒæ°ããªãå Žåã¯ãã«ãŒã«ã®ååãåã«æžãããšãã§ããŸãã
3ã€ã®ãšã³ããªã¯ãã¹ãŠåäžã§ãã
"login": [ { required: [] } ]
"login": [ "required" ]
"login": "required"
詳现ã«ã€ããŠã¯ãä»æ§ã®ãä»çµã¿ãã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
ãµããŒããããŠããã«ãŒã«
ãã¹ãŠã®ã«ãŒã«ã¯ã3ã€ã®ã°ããŒãã«ã°ã«ãŒãã«åããããšãã§ããŸãã
- ããŒã¿ïŒæ°å€ãæååãªã©ïŒãæ€èšŒããã«ãŒã«ã ããšãã°ããmax_lengthãã
- ããåçŽãªã«ãŒã«ã§ããè€éãªã«ãŒã«ãäœæã§ããã«ãŒã«ã ããšãã°ããnested_objectãã
- ããŒã¿ãå€æããã«ãŒã«ã ããšãã°ããto_lcã
ããããããªããŒã¿ãŒèªäœã¯ããããåºå¥ããŸããã圌ã«ãšã£ãŠãããã¯ãã¹ãŠçããã§ãã
以äžã«ãåããªããŒã¿ãŒå®è£ ã§ãµããŒãããå¿ èŠãããã«ãŒã«ã®äžè¬çãªãªã¹ãã瀺ããŸãã
åºæ¬çãªã«ãŒã«
- å¿ é -ãã£ãŒã«ãã¯å¿ é ã§ãããå€ã¯ç©ºã§ãã£ãŠã¯ãªããŸãã
- not_empty-ãã£ãŒã«ãã¯ãªãã·ã§ã³ã§ããã空ã®å Žåã¯ç©ºã«ã§ããŸãã
- not_empty_list-å€ã«ã¯ç©ºã§ãªãé åãå«ãŸããŠããå¿ èŠããããŸã
æååããã§ãã¯ããããã®ã«ãŒã«
- one_of
- max_length
- min_length
- length_between
- length_equal
- ã®ãããª
çªå·ããã§ãã¯ããããã®ã«ãŒã«
- æŽæ°
- positive_integer
- å°æ°
- positive_decimal
- max_number
- min_number
- number_between
ç¹å¥ãªåœ¢åŒã®ã«ãŒã«
- ã¡ãŒã«
- url
- iso_date
- equal_to_field
ããè€éãªã«ãŒã«ãèšè¿°ããããã®ã«ãŒã«ïŒã¡ã¿ã«ãŒã«ïŒ
- nested_object-ãã¹ãããããªããžã§ã¯ãã®ã«ãŒã«ã説æããŸã
- list_of-ãªã¹ãã®åèŠçŽ ãåŸããªããã°ãªããªãèŠåãèšè¿°ããŸã
- list_of_objects-å€ã¯ç®çã®åœ¢åŒã®ãªããžã§ã¯ãã®é åã§ããå¿ èŠããããŸã
- list_of_different_objects-ç°ãªãã¿ã€ãã®ãªããžã§ã¯ãã®é åã確èªããå¿ èŠãããå Žåã«äœ¿çšããŸãã
ããŒã¿å€æã®èŠåïŒååã¯åè©ã§å§ãŸããŸãïŒ
- trim-æ«å°Ÿã®å é ã®ã¹ããŒã¹ãåé€ããŸã
- to_lc-å°æåã«ãªããŸã
- to_uc-倧æåã«ãªããŸã
- remove-æå®ãããæåãåé€ããŸã
- leave_only-æå®ãããæåã®ã¿ãæ®ã
ã¡ã¿ã«ãŒã«
åã«ãŒã«ã®äŸãšãšã©ãŒã³ãŒãã¯ãLIVRä»æ§ã«èšèŒãããŠããŸãã ã¡ã¿ã«ãŒã«ã«ã€ããŠã®ã¿ããå°ã詳ãã説æããŸãã ã¡ã¿ã«ãŒã«ã¯ãè€éãªéå±€ããŒã¿æ§é ãæ€èšŒããããã«ãåçŽãªã«ãŒã«ãããè€éãªã«ãŒã«ã«çµåã§ããã«ãŒã«ã§ãã ããªããŒã¿ãŒã¯åçŽãªã«ãŒã«ãšã¡ã¿ã«ãŒã«ãåºå¥ããªãããšãç解ããããšãéèŠã§ãã ã¡ã¿ã«ãŒã«ã¯åããå¿ é ããšåãã§ãïŒã¯ããç¹°ãè¿ããŸãïŒã
nested_object
ãã¹ãããããªããžã§ã¯ãã®æ€èšŒã«ãŒã«ãèšè¿°ã§ããŸãã ãã®ã«ãŒã«ã¯åžžã«äœ¿çšããŸãã
ãšã©ãŒã³ãŒãã¯ããã¹ããããã«ãŒã«ã«äŸåããŸãã ãã¹ãããããªããžã§ã¯ããããã·ã¥ïŒèŸæžïŒã§ãªãå Žåããã£ãŒã«ãã«ã¯ãšã©ãŒãå«ãŸããŸãïŒãFORMAT_ERRORãã
䜿çšäŸïŒ demo ïŒïŒ
address: { 'nested_object': { city: 'required', zip: ['required', 'positive_integer'] }}
list_of
å€ã®ãªã¹ãã®æ€èšŒã«ãŒã«ãèšè¿°ã§ããŸãã åã«ãŒã«ã¯ãªã¹ãå ã®åã¢ã€ãã ã«é©çšãããŸãã
ãšã©ãŒã³ãŒãã¯ããã¹ããããã«ãŒã«ã«äŸåããŸãã
䜿çšäŸïŒ demo ïŒïŒ
{ product_ids: { 'list_of': [ 'required', 'positive_integer'] }}
ãªããžã§ã¯ãã®ãªã¹ã
ããã·ã¥ïŒèŸæžïŒã®é åã®æ€èšŒèŠåãèšè¿°ã§ããŸãã ãnested_objectãã®ããã«èŠããŸããããªããžã§ã¯ãã®é åãå¿ èŠã§ãã èŠåã¯é åå ã®åèŠçŽ ã«é©çšãããŸãã
ãšã©ãŒã³ãŒãã¯ããã¹ããããã«ãŒã«ã«äŸåããŸãã å€ãé åã§ã¯ãªãå Žåããã£ãŒã«ãã«å¯ŸããŠã³ãŒããFORMAT_ERRORããè¿ãããŸãã
䜿çšäŸïŒ demo ïŒïŒ
products: ['required', { 'list_of_objects': { product_id: ['required','positive_integer'], quantity: ['required', 'positive_integer'] }}]
list_of_different_objects
ãlist_of_objectsãã«äŒŒãŠããŸãããç§ãã¡ã«å±ãé åã«ã¯ãããŸããŸãªã¿ã€ãã®ãªããžã§ã¯ããå«ãŸããŠããããšããããŸãã ãªããžã§ã¯ãã®ã¿ã€ãã¯ããã¿ã€ãããªã©ã®ãã£ãŒã«ãã«ãã£ãŠå€å¥ã§ããŸãã ãList_of_different_objectsãã䜿çšãããšãããŸããŸãªã¿ã€ãã®ãªããžã§ã¯ãã®ãªã¹ãã®ã«ãŒã«ãèšè¿°ã§ããŸãã
ãšã©ãŒã³ãŒãã¯ããã¹ããããæ€èšŒã«ãŒã«ã«äŸåããŸãã ãã¹ãããããªããžã§ã¯ããããã·ã¥ã§ãªãå Žåããã£ãŒã«ãã«ã¯ãšã©ãŒãFORMAT_ERRORããå«ãŸããŸãã
䜿çšäŸïŒ demo ïŒïŒ
{ products: ['required', { 'list_of_different_objects': [ product_type, { material: { product_type: 'required', material_id: ['required', 'positive_integer'], quantity: ['required', {'min_number': 1} ], warehouse_id: 'positive_integer' }, service: { product_type: 'required', name: ['required', {'max_length': 20} ] } } ]}] }
ãã®äŸã§ã¯ãããªããŒã¿ãŒã¯åããã·ã¥ã®ãproduct_typeãã調ã¹ããã®ãã£ãŒã«ãã®å€ã«å¿ããŠãé©åãªæ€èšŒã«ãŒã«ã䜿çšããŸãã
ãšã©ãŒåœ¢åŒ
æ¢ã«è¿°ã¹ãããã«ãã«ãŒã«ã¯éçºè ãç解ããæååãšã©ãŒã³ãŒããè¿ããŸããããšãã°ããREQUIREDãããWRONG_EMAILãããWRONG_DATEããªã©ã§ãã éçºè ã¯ãšã©ãŒãäœã§ããããç解ã§ããããã«ãªããã©ã®ãã£ãŒã«ãã§ãšã©ãŒãçºçããããäŒããã®ã«äŸ¿å©ã§ãã ãããè¡ãããã«ãããªããŒã¿ãŒã¯æ€èšŒã®ããã«æž¡ããããã®ãšåæ§ã®æ§é ãè¿ããŸããããšã©ãŒãçºçãããã£ãŒã«ãã®ã¿ãå«ã¿ããã£ãŒã«ãã®å ã®å€ã§ã¯ãªããæååãšã©ãŒã³ãŒããå«ã¿ãŸãã
ããšãã°ã次ã®ã«ãŒã«ããããŸãã
{ name: 'required', phone: {max_length: 10}, address: { 'nested_object': { city: 'required', zip: ['required', 'positive_integer'] }} }
ããã³æ€èšŒããŒã¿ïŒ
{ phone: 12345678901, address: { city: 'NYC' } }
åºåã§ã¯ã次ã®ãšã©ãŒãçºçããŸã
{ "name": "REQUIRED", "phone": "TOO_LONG", "address": { "zip": "REQUIRED" } }
ãã¢æ€èšŒ
REST APIãšãšã©ãŒåœ¢åŒ
æ£æ°ãªãšã©ãŒãè¿ãã«ã¯ãåžžã«éçºè ã®è¿œå ã®åªåãå¿ èŠã§ãã ãŸãã詳现ãªãšã©ãŒæ å ±ãæäŸããããå°æ°ã®REST APIã å€ãã®å Žåãããã¯åãªããæªããªã¯ãšã¹ããã§ãããããã ãã§ãã ããŒã¿ãéå±€åããããªããžã§ã¯ãã®é åãå«ãå¯èœæ§ããããããã©ã®ãã£ãŒã«ãã«å±ããŠãããããã£ãŒã«ããã¹ã ãã§ã¯ååã§ã¯ãªããšãããšã©ãŒã確èªããããšæããŸã... æ€èšŒãšã©ãŒã®å Žåããšã©ãŒãªããžã§ã¯ããã¯ã©ã€ã¢ã³ãã«è¿ããŸãã ãšã©ãŒãªããžã§ã¯ãã«ã¯ãã°ããŒãã«ãšã©ãŒã³ãŒããšãLIVRããªããŒã¿ãŒããåä¿¡ãããšã©ãŒãå«ãŸããŸãã
ããšãã°ãããŒã¿ããµãŒããŒã«è»¢éããŸãã
{ "email": "user_at_mail_com", "age": 10, "address": { "country": "USQ" } }
ããã«å¿ããŠã以äžãååŸããŸãïŒ livr playgroundã®ãã¢æ€èšŒ ïŒïŒ
{"error": { "code": "FORMAT_ERROR", "fields": { "email": "WRONG_EMAIL", "age": "TOO_LOW", "fname": "REQUIRED", "lname": "REQUIRED", "address": { "country": "NOT_ALLOWED_VALUE", "city": "REQUIRED", "zip": "REQUIRED" } } }}
ããã¯ãããçš®ã®ãæªããªã¯ãšã¹ãããããã¯ããã«æçã§ãã
ãšã€ãªã¢ã¹ãæäœããç¬èªã®ã«ãŒã«ãç»é²ããŸã
ä»æ§ã«ã¯æã䜿çšãããã«ãŒã«ã®ã¿ãå«ãŸããŠããŸãããåãããžã§ã¯ãã«ã¯ç¬èªã®ä»æ§ããããããã€ãã®ã«ãŒã«ãæ¬ èœããŠããå Žåã¯åžžã«ç¶æ³ãçºçããŸãã ãã®ç¹ã§ãããªããŒã¿ãŒã®éèŠãªèŠä»¶ã®1ã€ã¯ãä»»æã®ã¿ã€ãã®ç¬èªã®ã«ãŒã«ã§ããªããŒã¿ãŒãæ¡åŒµã§ããå¯èœæ§ã§ããã åœåãåå®è£ ã«ã¯ã«ãŒã«ãèšè¿°ããç¬èªã®ã¡ã«ããºã ããããŸããããä»æ§ããŒãžã§ã³0.4ãããä»ã®ã«ãŒã«ã«åºã¥ããŠã«ãŒã«ãäœæããïŒãšã€ãªã¢ã¹ãäœæããïŒæšæºçãªæ¹æ³ãå°å ¥ããŸãããããã¯ç¶æ³ã®70ïŒ ãã«ããŒããŸãã äž¡æ¹ã®ãªãã·ã§ã³ãæ€èšããŠãã ããã
ãšã€ãªã¢ã¹ãäœæãã
ãšã€ãªã¢ã¹ã®ç»é²æ¹æ³ã¯å®è£ ã«ãã£ãŠç°ãªããŸããããšã€ãªã¢ã¹ã®èšè¿°æ¹æ³ã¯ä»æ§ã«ãã£ãŠèŠå¶ãããŠããŸãã ããšãã°ããã®ã¢ãããŒãã«ããããšã€ãªã¢ã¹ã®èª¬æãã·ãªã¢ã«åããç°ãªãå®è£ ã§äœ¿çšããããšãã§ããŸãïŒããšãã°ãPerlããã¯ãšã³ããšJavaScriptããã³ããšã³ãã§ïŒ
// "valid_address" validator. registerAliasedRule({ name: 'valid_address', rules: { nested_object: { country: 'required', city: 'required', zip: 'positive_integer' }} }); // "adult_age" validator.registerAliasedRule( { name: 'adult_age', rules: [ 'positive_integer', { min_number: 18 } ] }); // , . { name: 'required', age: ['required', 'adult_age' ], address: ['required', 'valid_address'] }
ããã«ãã«ãŒã«ã«ç¬èªã®ãšã©ãŒã³ãŒããèšå®ã§ããŸãã
äŸãã°
validator.registerAliasedRule({ name: 'valid_address', rules: { nested_object: { country: 'required', city: 'required', zip: 'positive_integer' }}, error: 'WRONG_ADDRESS' });
ã¢ãã¬ã¹ã®æ€èšŒã§ãšã©ãŒãçºçããå Žåã次ã®ããã«ãªããŸãã
{ address: 'WRONG_ADDRESS' }
JavaScriptå®è£ ãäŸãšããŠäœ¿çšããŠå®å šãªã«ãŒã«ãç»é²ãã
æ€èšŒã«ã¯ãå€ãæ€èšŒããã³ãŒã«ããã¯é¢æ°ã䜿çšãããŸãã ãstrong_passwordããšããæ°ããã«ãŒã«ã説æããŠã¿ãŸãããã å€ã8æåãè¶ ããŠããã倧æåãšå°æåã®æ°åãšæåãå«ãŸããŠããããšã確èªããŸãã
var LIVR = require('livr'); var rules = {password: ['required', 'strong_password']}; var validator = new LIVR.Validator(rules); validator.registerRules({ strong_password: function() { return function(val) { // . "required" if (val === undefined || val === null || val === '' ) return; if ( length(val) < 8 || !val.match([0-9]) || !val.match([az] || !val.match([AZ] ) ) { return 'WEAK_PASSWORD'; } return; } } });
ããã§ããã¹ã¯ãŒãã®æå°æåæ°ãèšå®ããæ©èœãè¿œå ãããã®ã«ãŒã«ãã°ããŒãã«ïŒããªããŒã¿ãŒã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã§äœ¿çšå¯èœïŒãšããŠç»é²ããŸãã
var LIVR = require('livr'); var rules = {password: ['required', {'strong_password': 10}]}; var validator = new LIVR.Validator(rules); var strongPassword = function(minLength) { if (!minLength) throw "[minLength] parameter required"; return function(val) { // . "required" if (val === undefined || val === null || val === '' ) return; if ( length(val) < minLength || !val.match([0-9]) || !val.match([az] || !val.match([AZ] ) ) { return 'WEAK_PASSWORD'; } return; } }; LIVR.Validator.registerDefaultRules({ strong_password: strongPassword });
ãããã£ãŠãéåžžã«ç°¡åã«ãæ°ããã«ãŒã«ãç»é²ãããŸãã ããè€éãªã«ãŒã«ãèšè¿°ããå¿ èŠãããå Žåãæé©ãªãªãã·ã§ã³ã¯ãããªããŒã¿ãŒã«å®è£ ãããŠããæšæºã«ãŒã«ã®ãªã¹ãã衚瀺ããããšã§ãã
å€ãæ€èšŒããã ãã§ãªããå€ãå€æŽããã«ãŒã«ãç»é²ããããšãã§ããŸãã ããšãã°ã倧æåã«ããããäœåãªã¹ããŒã¹ãåé€ããŸãã
ä»æ§ã«åŸã£ãå®è£
ããªããŒã¿ãŒã®å®è£ ãäœæãããå Žåã¯ãã¿ã¹ã¯ã容æã«ããããã«äžé£ã®ãã¹ãã±ãŒã¹ãäœæãããŸããã å®è£ ããã¹ãŠã®ãã¹ãã«åæ Œããå Žåãããã¯æ£ãããšã¿ãªãããšãã§ããŸãã ãã¹ãã¹ã€ãŒãã¯4ã€ã®ã°ã«ãŒãã§æ§æãããŠããŸãã
- ãããžãã£ãã-åºæ¬ã«ãŒã«ã®ããžãã£ããã¹ã
- ãè² ã-åºæ¬ã«ãŒã«ã®è² ã®ãã¹ã
- "Aliases_positive"-ã«ãŒã«ãšã€ãªã¢ã¹ã®ããžãã£ããã¹ã
- "Aliases_negative"-ã«ãŒã«ãšã€ãªã¢ã¹ã®ãã¬ãã£ããã¹ã
å®éãåãã¹ãã«ã¯ããã€ãã®ãã¡ã€ã«ãå«ãŸããŠããŸãã
- rules.json-æ€èšŒã«ãŒã«ã®èª¬æ
- input.json-æ€èšŒã®ããã«ããªããŒã¿ãŒã«æž¡ãããæ§é
- output.json-æ€èšŒåŸã«ååŸãããã¯ãªãŒã³ãªæ§é
ãoutput.jsonãã®ä»£ããã®åè² ã®ãã¹ãã«ã¯ãæ€èšŒã®çµæãšããŠçºçãããšã©ãŒã®èª¬æãšãšãã«ãerrors.jsonããå«ãŸããŸãã ãšã€ãªã¢ã¹ãã¹ãã«ã¯ããšã€ãªã¢ã¹ãäºåã«ç»é²ããå¿ èŠã®ãããaliases.jsonããã¡ã€ã«ããããŸãã
ãªãJSONã¹ããŒãã§ã¯ãªãã®ã§ããïŒ
ãããã質åã èŠããã«ãããã€ãã®çç±ããããŸãã
- ã«ãŒã«ã®è€éãªåœ¢åŒã ã«ãŒã«ã®ããæ§é ããããŒã¿ã®ããæ§é ã«ã§ããã ãè¿ã¥ãããã ãã®äŸãJSONã¹ããŒãã§èª¬æããŠã¿ãŠãã ãã
- ãšã©ãŒåœ¢åŒã¯æå®ãããŠããããå®è£ ãç°ãªããšãšã©ãŒãç°ãªã圢åŒã§è¿ãããŸãã
- ãto_lcããªã©ã®ããŒã¿å€æã¯ãããŸããã
JSONã¹ããŒãã«ã¯ããªã¹ãå ã®èŠçŽ ã®æ倧æ°ãæå®ããæ©èœãªã©ãèå³æ·±ããã®ãå«ãŸããŠããŸãããLIVRã§ã¯ãããã¯å¥ã®ã«ãŒã«ãè¿œå ããã ãã§å®è£ ãããŸãã
LIVRãªã³ã¯
- LIVRä»æ§ïŒææ°ããŒãžã§ã³-0.4ïŒ
- ãã¹ãã¹ã€ãŒã
- LIVRãã¬ã€ã°ã©ãŠã³ã
- Javascriptã®å®è£
- Perlã®å®è£
- PHPã®å®è£
- Pythonã®å®è£
- PragmaticPerlãã¬ãžã³ã®LIVRããã³Perlå®è£ ã«é¢ããèšäº
- OSDN-UA 2013ã§ã®LIVRã«é¢ãããããªã¬ããŒã
UPDïŒ
LIVR 2.0ïŒ http://livr-spec.org/ ïŒããªãªãŒã¹ãããŸããã æ°æ©èœïŒ
- åãæ±ãããã®äžè²«ããã¢ãããŒãã
- ãåºæ¬ã«ãŒã«ãã¯ãå ±éã«ãŒã«ãã«ååãå€æŽãããŸããã
- ããã£ã«ã¿ãŒèŠåãã¯ã修食åãã«ååãå€æŽãããŸããã äœãæ€èšŒããªããããããŒã¿ãå€æŽããã ãã§ãã
- ããã«ããŒã«ãŒã«ãã®ååããã¡ã¿ã«ãŒã«ãã«å€æŽãããŸãã
- ã«ãŒã«ãany_objectããè¿œå ããããããªããžã§ã¯ãã§ããããšã確èªããŸã
- è¿œå ãããã«ãŒã«-æååãä»»æã®ã¿ã€ãã®æåå
- ã«ãŒã«ãeqããè¿œå -æååã®ç䟡æ§ããã§ãã¯
- ã¡ã¿ã«ãŒã«ãvariable_objectããè¿œå ããŸããã ãªããžã§ã¯ãã®ãã£ãŒã«ãã«å¿ããŠã䜿çšããæ€èšŒãåçã«æ±ºå®ããŸãã
- ã¡ã¿ã«ãŒã«ãorããè¿œå ããŸããã æåã«äžèŽãããŸã§ã«ãŒã«ã1ã€ãã€é©çšã§ããŸãã
- ãŠãŒã¶ãŒãäœãæž¡ããªãã£ãå Žåã®ããã©ã«ãå€ãèšå®ããããã«ã修食åãdefaultããè¿œå ãããŸããã
- ãã¹ãã»ãããå€§å¹ ã«æ¡åŒµãããŸããã
JavaScriptå®è£ ã¯ãã§ã«ãã¹ãŠã®æ°ããé¢æ°ããµããŒãããŠããŸãããå®è£ ã®æ®ãã®éšåã¯æŽæ°äžã§ãã