source

Restful API의 경우 GET method에서 json 데이터를 사용할 수 있습니까?

factcode 2023. 2. 17. 21:40
반응형

Restful API의 경우 GET method에서 json 데이터를 사용할 수 있습니까?

URI에서 그렇게 긴 매개 변수 문자열은 보고 싶지 않습니다. 그러면 GET 메서드는 json 데이터를 사용할 수 있습니까?

제 상황에서는 주어진 파라미터의 종류를 필터링할 필요가 있습니다.파라미터가 많으면 길이가 URI의 제한을 초과할 수 있습니다.이 문제에 대한 베스트 프랙티스가 있을까요?

이론적으로, 당신이 요청하신 시신을 보내시는 걸 막을 수 있는 건 아무것도 없어요GET부탁한다.HTTP 프로토콜은 이를 허용하지만 정의된 시멘틱스를 가지고 있지 않기 때문에 클라이언트가 이 프로토콜을 전송할 때 정확히 어떤 일이 일어날지 문서화하는 것은 사용자에게 달려 있습니다.GETpayload.예를 들어 JSON 본문의 파라미터가 querystring 파라미터와 동일한지, 아니면 완전히 다른 파라미터와 동일한지를 정의해야 합니다.

단, 명확하게 정의된 시멘틱스가 없기 때문에 애플리케이션과 클라이언트 간의 구현이 이를 존중한다는 보장은 없습니다.서버 또는 프록시는 전체 요청을 거부하거나 본문 또는 기타 모든 것을 무시할 수 있습니다.장애가 발생한 구현에 대처하는 나머지 방법은 애플리케이션과 분리된 방식으로 이를 회피하는 것입니다. 따라서 베스트 프랙티스로 간주할 수 있는 두 가지 옵션이 있습니다.

간단한 옵션은POST대신GET다른 답변이 권장하는 바와 같이.부터POST는 HTTP에 의해 표준화 되어 있지 않기 때문에, 그 동작의 정확한 방법을 기록해 둘 필요가 있습니다.

제가 선호하는 다른 옵션은 다음과 같은 경우를 가정하여 애플리케이션을 구현하는 것입니다.GETpayload는 변경되지 않습니다.다음으로 구현이 중단된 경우 클라이언트가 HTTP 메서드를 덮어쓸 수 있도록 합니다.X-HTTP-Method-Overrideheader. 이것은 클라이언트가 HTTP 메서드를 에뮬레이트하기 위한 일반적인 규칙입니다.POST따라서 구현이 실패했을 경우 클라이언트는 다음 명령을 작성할 수 있습니다.GET로서 요청하다POST, 송신X-HTTP-Method-Override: GET그러면 애플리케이션 구현에서 분리된 미들웨어를 가지고 그에 따라 메서드를 다시 작성할 수 있습니다.순수주의자라면 이게 최선의 선택이야

질문에 답하기 위해 GET 요청의 일부로 URI에서 JSON을 전달할 수 있습니다(URL-encode를 사용할 경우).단, URI의 길이에 기인하는 이유를 고려하면 JSON을 사용하면 (필요한 문자보다 많은 문자가 도입됨) 자기 패배가 발생합니다.

CGI 형식) 중 로 POST 요청합니다.param1=val1&param2=val2JSON수신 시 해석됨)

언급URL : https://stackoverflow.com/questions/29571284/for-restful-api-can-get-method-use-json-data

반응형