2014-11-14 2 views
0

안녕하세요, 내 node.js 응용 프로그램에서 API를 문서화하기 위해 UI를 사용하고 있습니다. 성공적으로 구성되었으며 제대로 작동합니다.노드 js에 대한 swagger UI에서 json 형식의 유효성 검사 추가

하지만 지금은 심각한 문제에 직면하고 있습니다. 여기

이에서

exports.people = { 
    'spec': 
    { 
    path : "/people", 
    method: "POST", 
    summary : "Create new person", 
    notes : "Create new person", 
    nickname : "people",  
    parameters : [param.form("email", "email", "string", true), 
        param.form("firstName", "firstName", "string", true), 
        param.form("paylod", "Payload", "string", true), 
        param.form("lastName", "lastName", "string", true)] 
    }, 
    'action': function(req, res) 
    { 

     -----code---- 
    } 
} 

내 컨트롤러에서 내 샘플 자신감 코드, 난

{"id": <your-ID>,"latd":<latitude- value>","long":<longitude- value>"} 

json 형식으로 값을 payload 매개 변수가 있지만

같은 invalid json를 전달하는 경우
id=abc latd=1234 long=asv 

다음 서버가 손상되었습니다. 이 매개 변수에 대한 유효성 검사를 추가해야하므로이 특정 매개 변수에 대한 유효성 검사를 어떻게 추가 할 수 있습니까?

답변

0

"payload"의 유형을 id, latd 및 long 필드가있는 모델로 설정할 수 있으며 작동해야합니다.

그러나 Swagger 2.0에서는 더 이상 지원되지 않습니다.

API 현명한는 디자인에 문제가 - 당신은 양식 매개 변수를 사용하기 때문에, 콘텐츠 형식은 multipart/form-data 수 있으며, 그 형태 자체가 자신의 콘텐츠 유형이 아닌 할 매개 변수 의미 표현에 의존하지 않아야한다. 값의 구조가 JSON 구조라는 것은 문서화 된 것입니다. 예를 들어 XML이 아닌 JSON으로 구조화해야한다는 말의 의미는 없습니다.

일반적으로 작업에 구조화 된 데이터 (일반적으로 POST/PUT 메서드 사용)를 사용하려면 해당 작업의 전체 페이로드를 해당 데이터로 설정해야합니다. 이를 완료하려면 요청의 MIME 유형을 구조화 된 데이터의 MIME 유형으로 설정하십시오. 위의 예에서 가장 간단한 마임 유형은 application/json입니다. Swagger에서 이는 "consumes" 속성으로 변환됩니다. 매개 변수 유형 자체는 Swagger에서 body 매개 변수로 변환됩니다.

다른 매개 변수는 쿼리 매개 변수, 경로 매개 변수 또는 헤더 매개 변수로 변환됩니다. 여기서 쿼리 매개 변수는 대부분의 경우에보다 분명하게 선택됩니다. 작업의 논리에 따라 추가 매개 변수를 페이로드 개체 자체의 일부로 푸시하는 것도 의미가 있습니다. 이것은이 질문의 범위를 벗어나는 다양한 API 디자인 패러다임에 들어갑니다.

필수 매개 변수에 대한 추가 질문 - 예, 매개 변수를 필수로 설정할 수 있습니다. 문자열에서 실제 모델로 변경하면 필요에 따라 해당 모델의 특정 필드를 설정할 수 있습니다.

+0

폼 이외의 POST 요청에 어떤 매개 변수를 사용해야하는지 알려주실 수 있습니까? – user2622247

+1

물론, 나는 그것을 대답에 추가 할 것이다. – Ron

+0

또한 질문 하나'require = true'를 추가 한 것과 마찬가지로'param.form ("paylod", "Payload", "string", true)에 검증을 추가 할 수 있습니까? – user2622247

관련 문제