prosource

JSON vs 폼 POST

probook 2023. 3. 4. 15:00
반응형

JSON vs 폼 POST

REST 엔드포인트에 데이터를 게시하는 문제에 대해 약간의 논의를 하고 있습니다.오브젝트는 매우 복잡하기 때문에 가장 쉬운 해결책은 단순히 오브젝트를 JSON으로 시리얼화하여 요청 본문에 송신하는 것입니다.

이제 질문은 다음과 같습니다.이거 코셔야?또는 JSON을 data=[와 같은 폼 파라미터로 설정해야 합니까?JSON] ?또는 어플리케이션을 사용하는 클라이언트에 대해 브라우저가 데이터를 패키지화하지 않고 JavaScript를 통해 송신하도록 요구 본문에 JSON을 송신하는 것에 대해 거부감을 느끼고 있습니까?application/x-www-form-urlencoded?

세 가지 방법 모두 효과가 있다는 걸 알아요.하지만 어떤 게 괜찮을까?아니면 최소한 추천이라도?

두 방법 모두 잘 작동한다고 생각합니다. API 전체에서 일관성을 유지하는 것이 중요합니다.제가 개인적으로 선택할 수 있는 옵션은 단순히 콘텐츠를 다음과 같이 보내는 것입니다.application/json.

POST를 사용하도록 강요하지 않습니다.application/x-www-form-urlencoded- 웹브라우저들이 많이 쓰는 것 같아요.

serialized JSON으로 직접 전송해도 문제 없습니다.를 들어 구글은 이 기능을 기본적으로 사용합니다.volley라이브러리(안드로이드에 권장되는 REST 라이브러리임)

사실 SO에서는 JSON을 사용하지 않고 발리로 "일반" POST 요청을 실행하는 방법에 대해 많은 질문이 있습니다.기본 클래스를 덮어써야 하는 초보자에게는 다소 직관적인 카운터입니다.'getParams()방법.

하지만 구글 자체 REST 라이브러리가 기본적으로 이 기능을 수행하도록 하는 것은 문제가 없다는 것을 보여주는 지표가 될 것입니다.

OP에서 세 가지 옵션이 모두 작동한다고 했으므로 JSON을 요청 데이터의 일부로 사용할 수 있습니다.

OP는 복잡한 구조 콘텐츠를 포함해야 했기 때문에 JSON 입력을 지원해야 합니다.하지만 이렇게 생각하면...당신은 무언가를 하도록 요청하고 있습니까?아니면 기본적으로 문서 데이터를 전송하고 있는 것 뿐이고, 당신은 우연히 그것을 사용하고 있는 것입니까?POST새로운 엔트리를 작성하는 것과 동등한 조작을 실시합니다.

이 경우 기본적으로 CRUDL 시멘틱스를 가진 리소스 엔드포인트입니다.후속 조치를 취하면 실제로 이 문제에 국한되지 않습니다.application/json리소스 끝점이 처리해야 하는 모든 유형입니다.

리소스가 아닌 엔드포인트의 경우

) ('JAX-RS'의 경우)는.application/x-www-urlencoded하나가 더 낫다.

  1. OAuth 2.0 오픈 Connect, Connect를 사용합니다.application/x-www-urlencoded.
  2. Swagger 주석을 사용하여 개별 필드에 주석을 달기 쉬워짐
  3. Swagger는 더 많은 기본값을 제공합니다.
  4. 우체부는 당신이 작성하기 좋은 양식을 만들어 주고 테스트하기 쉽게 해줍니다.

리소스가 아닌 엔드포인트의 예:

  • 인증
  • 허가
  • 단순 검색(단,GET (이쪽)
  • 기준이 많은 단순 검색
  • 송신(「/」(「」, 「」)도만)multipart/form-data컨텐츠와 함께 메타데이터를 전달할 수 있습니다만, JAX-RS에는 이 Jersey의 표준이 없고, Rest Easy에는 독자적인 실장이 있습니다.)

언급URL : https://stackoverflow.com/questions/8604717/json-vs-form-post

반응형