이 내용을 언급할 가치가 있는지는 확신이 서지 않지만, 오늘 이 제이ムの create_topic와 edit_post 메서드에서 반환되는 응답을 파싱할 때 이 문제로 막혔습니다.
create_topic는 post 메서드를 호출합니다. 이 메서드는 response.body를 반환하거나 DiscourseApi::Error를 발생시킵니다:
def post(path, params = {})
response = request(:post, path, params)
case response.status
when 200, 201, 204
response.body
else
raise DiscourseApi::Error, response.body
end
end
edit_post는 put 메서드를 호출합니다. 이 메서드는 Faraday::Env 객체를 반환합니다:
#<struct Faraday::Env method=:put, request_body="post%5Braw%5D=It%27s+a+minor+thing%2C+but+it+comes+up+a+lot.+I%27ll+do+some+tests....
이 제이ム를 사용하는 애플리케이션의 경우, post와 put 요청에서 반환되는 응답을 다르게 처리해야 합니다. put 요청을 처리하려면 요청을 수행하는 애플리케이션은 API 제이ム이 post 요청에 대해 수행하는 것과 유사한 작업을 수행해야 합니다:
def update_topic_from_note(markdown:, post_id:)
response = @client.edit_post(post_id, markdown)
case response.status
when 200, 201, 204
response.body
else
# ...
세상 끝이 되는 일은 아니지만, 의외였습니다. API 코드에 변경 사항을 적용하기가 어렵다는 점은 알고 있습니다.