Как читать данные, отправленные HTTParty в Синатре - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь установить связь между двумя отдельными программами на Ruby: одна с гемом Синатра, а другая с гемом HTTParty.То, что я пытаюсь сделать, - это отправить данные в программу Sinatra из HTTP-запроса на передачу в другой программе.

Это код, который отправляет данные.

HTTParty.post('https://notgivingawaymydomain/post_data', {something: foo})

Однако я не знаю, как получить данные на другом конце.Я попробовал несколько вещей, которые я исследовал в интернете, но ни одна из них не работает.

РЕДАКТИРОВАТЬ

Мой код на другом конце действительно ничего особенного на данный момент, но я поставлючто я пытался

post '/post_data' do 
   #not sure how to access the hash that my post request sent here
end

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Почтовые данные доступны в объекте params внутри вашего маршрута Синатра:

post '/post_data' do 
  data = params["something"] # => my_value is now 'foo' in this example
  #... rest of code
end

Синатра анализирует данные, только если это application/x-www-form-urlencoded (что в данном случае) или multipart/form-data. Если вы хотите отправить POST другой тип (например, JSON), вам нужно будет самостоятельно проанализировать тело запроса, используя request.body:

post '/json_data'
  # request.body is an IO object
  data = JSON.parse(request.body.read)
end

Убедитесь, что синтаксис вашего HTTParty вызова правильный. Вам необходимо указать ключ body: из опций:

HTTParty.post('http://localhost:4567/post_data', body: {something: "foo"})
0 голосов
/ 06 марта 2019

Если вы хотите отправить данные через HTTP, вам нужен веб-сервер на принимающей стороне.

sinatra описывает себя как Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort

, так что сам по себе это не веб-сервер,но он может быть запущен через веб-сервер для обработки данных, которые вы публикуете через HTTP.он связан с веб-сервером, так что вы можете запустить его сразу.

если вы посмотрите на синатру README там написано

Рекомендуется такжеЗапустите gem install thin, который Sinatra подберет, если он доступен.

thin - надежный веб-сервер, который рекомендуется для запуска веб-приложений sinatra.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...