REST API의 요청 부분에서 사용자 지정 HTTP 헤더를 언제 사용합니까?
예:
당신은 사용 하시겠습니까
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
대신에
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
REST API의 요청 부분에서 사용자 지정 HTTP 헤더를 언제 사용합니까?
예:
당신은 사용 하시겠습니까
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
대신에
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
답변:
URL은 리소스 자체를 나타냅니다. "클라이언트"는 조치를 취할 수있는 리소스이므로 기본 URL의 일부 여야합니다 /orders/view/client/23
.
매개 변수는 리소스에 대한 액세스를 매개 변수화하기위한 것입니다. 이것은 특히 게시물 및 검색과 함께 작동 /orders/find?q=blahblah&sort=foo
합니다. 매개 변수와 하위 리소스 사이에는 미세한 경계가 /orders/view/client/23/active versus /orders/view/client/23?show=active
있습니다.. 하위 리소스 스타일을 권장하고 검색을 위해 매개 변수를 예약합니다.
각 엔드 포인트는 상태 전송 (니모닉을 조작하기 위해)을 나타내므로 사용자 지정 헤더는 리소스 이름 (URL), 리소스 상태 (본문) 또는 매개 변수를 직접 포함하지 않는 항목에만 사용해야합니다. 리소스 (매개 변수)에 영향을줍니다. 그러면 사용자 지정 헤더 요청에 대한 진정한 메타 데이터가 남습니다.
HTTP에는 필요한 모든 것을 포함하는 매우 광범위한 헤더가 있습니다. 사용자 지정 헤더가 나타나는 곳은 사용자를 대신하여 작동하는 시스템 대 시스템 요청입니다. 프록시 시스템은 사용자의 유효성을 검사하고 X-User: userid
헤더에 " "을 추가 하고 시스템 자격 증명을 사용하여 엔드 포인트에 도달합니다. 수신 시스템은 시스템 자격 증명이 사용자를 대신 할 권한이 있는지 확인한 다음 사용자가 작업을 수행 할 권한이 있는지 확인합니다.
사용자 정의 헤더에는 다음과 같은 장점이 있습니다.
표준 또는 규칙에 따라 정보를 전달할 다른 방법이 없을 때만 사용자 지정 헤더를 사용합니다. Darren102는 그 값을 전달하는 일반적인 방법을 설명합니다. Api는 사용자 지정 헤더를 사용하는 일반적인 패턴을 사용하여 훨씬 더 친숙해질 것입니다. 즉, 사용할 사례가 없다는 것은 아니며, 마지막 수단이어야하며 HTTP 사양에 의해 아직 처리되지 않은 것이어야합니다.
REST API의 요청 부분에서 언제 ... HTTP 헤더를 사용합니까?
인증 : GUID, 기본 인증, 사용자 지정 토큰 등. 예 : 사용자 이름 / 암호 대신 REST API 용 Guid 토큰을 사용한 기본 인증
PCI-DSS 또는 기타 보안 규칙이 적용되는 도메인간에 토큰 또는 기타 인증과 같은 정보를 전달하는 데 관여하는 경우 일부 규정에서는 인증 요소가 사소하게 재생 될 수있는 URL에서 벗어나도록 명시 적으로 요구하기 때문에 매개 변수를 묻어 야 할 수도 있습니다. 브라우저 기록, 프록시 로그 등).
프록시가 전달하는지 여부를 알 수 없으므로 사용자 지정 헤더를 사용하지 않습니다. URL 기반은 갈 길입니다.
GET / orders / view / client / 23
확실히 OK :
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
또한 확인 :
GET /orders/view/23 or
나는 이것도 괜찮을 것이라고 생각합니다.
POST /orders/view
(custom HTTP header) CLIENT_ID: 23
Enveloping 이 좋은 방법이 아니라는 점을 고려하여 사용자 지정 헤더를 사용하여 부분적으로 처리 된 요청에 대한 추가 정보를 포함 할 수 있습니다 . 헤더는 안전 합니다.