[Rails 소재 습득] HTML 폼이 정말 GET와 POST에 의해 제한되었나요?
계기
서적 웹을 지탱하는 기술을 읽은 후 p98에 다음과 같은 기록이 있다.しかし、現実に一番よく利用されているのはGETとPOSTの2つです。
これはHTMLのフォームで指定できるメソッドがGETとPOSTだけという制限に起因します。
이것을 읽었습니다. "그럼, 업데이트 동작(PATCH 방법)은 어떻게 이루어졌나요?"
그렇게 생각하지만 바로 옆 페이지에 적혀 있어요.
Rails는 _method
매개변수로 이루어진 것으로 보입니다.
실제로 확인해 볼게요.
공지라는 모드가 있으면 공지를 게시할 수 있습니다.
라우팅 선택
(물론) 업데이트 동작은 PATCH
또는 PUT
발동된 것이다.$ rails routes|grep notice
notices GET /notices(.:format) notices#index
POST /notices(.:format) notices#create
new_notice GET /notices/new(.:format) notices#new
edit_notice GET /notices/:id/edit(.:format) notices#edit
notice PATCH /notices/:id(.:format) notices#update
PUT /notices/:id(.:format) notices#update
DELETE /notices/:id(.:format) notices#destroy
HTML
편집 페이지의form右クリック→ページのソースを表示
에서 보십시오.<form class="edit_notice" id="edit_notice_18" action="/notices/18" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" />
<input type="hidden" name="_method" value="patch" /><input type="hidden" name="authenticity_token" value="lGc0ypr/fV1WxhHZm6OS1ehZMpPj9IIgKF/8S5pm3FglyNHWxFgGLGt25AjoFb9BAINs4iRwg7VXn8eLjv9QGQ==" />
<label>お知らせ</label>
<textarea name="notice[body]" id="notice_body">test</textarea>
<input type="submit" name="commit" value="登録" data-disable-with="登録中…" />
</form>
확실히form 라벨을 보면 method="put"또는 method="patch"가 아니라 method="post"
입니다.
그리고 숨겨진 매개 변수 (hidden) 에 _method
매개 변수가 준비되어 있는지 확인할 수 있습니다.↓<input type="hidden" name="_method" value="patch" />
제가 Wireshark에서 가방을 하나 잡았어요.
실제 http 패키지를 보고 싶어서 해봤어요.
wireshark에서 인터페이스를localhost로 지정하면localhost:3000과의 그룹 통신을 포착할 수 있습니다.
그림은 편집 페이지에서submit할 때의 http 패키지입니다.
POST
메서드에 대한 HTTP 요청이 전송되었는지 확인할 수 있습니다.
또한 HTML Form URL Encoded: application/x-www-form-urlencoded
내Form item: "_method" = "patch"
의 매개변수를 확인할 수 있습니다.
이 파라미터"patch"
를 보고 처리 방법을 보냈다고 생각했을 수도 있다.
디버깅
업데이트 동작 내 binding.pry를 설치하고 디버깅합니다.[1] pry(#<NoticesController>)> request
=> #<ActionDispatch::Request:0x00007fd6cb6156d0
@env=
{"CONTENT_LENGTH"=>"210",
"CONTENT_TYPE"=>"application/x-www-form-urlencoded",
"GATEWAY_INTERFACE"=>"CGI/1.1",
"PATH_INFO"=>"/notices/15",
"QUERY_STRING"=>"",
"REMOTE_ADDR"=>"::1",
"REMOTE_HOST"=>"::1",
"REQUEST_METHOD"=>"PATCH",
"REQUEST_URI"=>"http://localhost:3000/notices/15",
"SCRIPT_NAME"=>"",
"SERVER_NAME"=>"localhost",
"SERVER_PORT"=>"3000",
실제 발송된 HTTP 요청은 전원 켜기 자체 검사 방법이지만 Rails에서는 PATCH 방법을 받고 처리했다고 생각하는 것 같습니다.
( "REQUEST_METHOD"=>"PATCH"
)
의문의 일
이번 확인에서_method에서patch가 맞혔습니다.put는 어떤 조건하에서 나타났을까요??
(어떤 조건에서put모드,patch모드가 있습니까?)
Reference
이 문제에 관하여([Rails 소재 습득] HTML 폼이 정말 GET와 POST에 의해 제한되었나요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xusaku_/items/54479e5744cd7af31f89
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
しかし、現実に一番よく利用されているのはGETとPOSTの2つです。
これはHTMLのフォームで指定できるメソッドがGETとPOSTだけという制限に起因します。
공지라는 모드가 있으면 공지를 게시할 수 있습니다.
라우팅 선택
(물론) 업데이트 동작은
PATCH
또는 PUT
발동된 것이다.$ rails routes|grep notice
notices GET /notices(.:format) notices#index
POST /notices(.:format) notices#create
new_notice GET /notices/new(.:format) notices#new
edit_notice GET /notices/:id/edit(.:format) notices#edit
notice PATCH /notices/:id(.:format) notices#update
PUT /notices/:id(.:format) notices#update
DELETE /notices/:id(.:format) notices#destroy
HTML
편집 페이지의form
右クリック→ページのソースを表示
에서 보십시오.<form class="edit_notice" id="edit_notice_18" action="/notices/18" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" />
<input type="hidden" name="_method" value="patch" /><input type="hidden" name="authenticity_token" value="lGc0ypr/fV1WxhHZm6OS1ehZMpPj9IIgKF/8S5pm3FglyNHWxFgGLGt25AjoFb9BAINs4iRwg7VXn8eLjv9QGQ==" />
<label>お知らせ</label>
<textarea name="notice[body]" id="notice_body">test</textarea>
<input type="submit" name="commit" value="登録" data-disable-with="登録中…" />
</form>
확실히form 라벨을 보면 method="put"또는 method="patch"가 아니라 method="post"
입니다.그리고 숨겨진 매개 변수 (hidden) 에
_method
매개 변수가 준비되어 있는지 확인할 수 있습니다.↓<input type="hidden" name="_method" value="patch" />
제가 Wireshark에서 가방을 하나 잡았어요.
실제 http 패키지를 보고 싶어서 해봤어요.
wireshark에서 인터페이스를localhost로 지정하면localhost:3000과의 그룹 통신을 포착할 수 있습니다.
그림은 편집 페이지에서submit할 때의 http 패키지입니다.
POST
메서드에 대한 HTTP 요청이 전송되었는지 확인할 수 있습니다.
또한 HTML Form URL Encoded: application/x-www-form-urlencoded
내Form item: "_method" = "patch"
의 매개변수를 확인할 수 있습니다.
이 파라미터"patch"
를 보고 처리 방법을 보냈다고 생각했을 수도 있다.
디버깅
업데이트 동작 내 binding.pry를 설치하고 디버깅합니다.[1] pry(#<NoticesController>)> request
=> #<ActionDispatch::Request:0x00007fd6cb6156d0
@env=
{"CONTENT_LENGTH"=>"210",
"CONTENT_TYPE"=>"application/x-www-form-urlencoded",
"GATEWAY_INTERFACE"=>"CGI/1.1",
"PATH_INFO"=>"/notices/15",
"QUERY_STRING"=>"",
"REMOTE_ADDR"=>"::1",
"REMOTE_HOST"=>"::1",
"REQUEST_METHOD"=>"PATCH",
"REQUEST_URI"=>"http://localhost:3000/notices/15",
"SCRIPT_NAME"=>"",
"SERVER_NAME"=>"localhost",
"SERVER_PORT"=>"3000",
실제 발송된 HTTP 요청은 전원 켜기 자체 검사 방법이지만 Rails에서는 PATCH 방법을 받고 처리했다고 생각하는 것 같습니다.
( "REQUEST_METHOD"=>"PATCH"
)
의문의 일
이번 확인에서_method에서patch가 맞혔습니다.put는 어떤 조건하에서 나타났을까요??
(어떤 조건에서put모드,patch모드가 있습니까?)
Reference
이 문제에 관하여([Rails 소재 습득] HTML 폼이 정말 GET와 POST에 의해 제한되었나요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xusaku_/items/54479e5744cd7af31f89
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
업데이트 동작 내 binding.pry를 설치하고 디버깅합니다.
[1] pry(#<NoticesController>)> request
=> #<ActionDispatch::Request:0x00007fd6cb6156d0
@env=
{"CONTENT_LENGTH"=>"210",
"CONTENT_TYPE"=>"application/x-www-form-urlencoded",
"GATEWAY_INTERFACE"=>"CGI/1.1",
"PATH_INFO"=>"/notices/15",
"QUERY_STRING"=>"",
"REMOTE_ADDR"=>"::1",
"REMOTE_HOST"=>"::1",
"REQUEST_METHOD"=>"PATCH",
"REQUEST_URI"=>"http://localhost:3000/notices/15",
"SCRIPT_NAME"=>"",
"SERVER_NAME"=>"localhost",
"SERVER_PORT"=>"3000",
실제 발송된 HTTP 요청은 전원 켜기 자체 검사 방법이지만 Rails에서는 PATCH 방법을 받고 처리했다고 생각하는 것 같습니다.(
"REQUEST_METHOD"=>"PATCH"
)의문의 일
이번 확인에서_method에서patch가 맞혔습니다.put는 어떤 조건하에서 나타났을까요??
(어떤 조건에서put모드,patch모드가 있습니까?)
Reference
이 문제에 관하여([Rails 소재 습득] HTML 폼이 정말 GET와 POST에 의해 제한되었나요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xusaku_/items/54479e5744cd7af31f89
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Rails 소재 습득] HTML 폼이 정말 GET와 POST에 의해 제한되었나요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xusaku_/items/54479e5744cd7af31f89텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)