создание объекта из почтового запроса в ruby - PullRequest
1 голос
/ 11 июля 2011

Этот вопрос о 2 приложениях рельсов, которые я создаю.Я пытаюсь разобраться с Rails и отдыхающими веб-сервисами.Большая часть кода псевдо, но если потребуется, я думаю, я мог бы попробовать некоторые примеры.

Есть также несколько базовых rails и веб-запросов.

Представьте, что у меня есть rails-программы A и BЯ хочу, чтобы A отправил запрос на публикацию, который в основном будет содержать объект, отформатированный в JSON (не требуется, но планируется), и B, чтобы получить его и превратить в нужный объект.Так что, по крайней мере, это мой план или концепция, и я хотел бы услышать некоторые отзывы о них.

Итак, сосредоточимся на B на данный момент.

URL-адрес, подобный этому

127.0.0.1: 8080 / receive

будет ссылаться на что-то вроде

def recieve (assuming routes are setup correctly)


@object = (this is where im a bit lost. how do i receive it from URL)
@request = UserRequest.new(params[:request])

Многие учебники, кажется, фокусируютсяпри отправке почтовых запросов, но никогда не получая и не обрабатывая их.Кто-нибудь указывает мне правильное направление?


А для A

Я знаю, как отправить запрос на почту

 @stringParams = 'www.stackoverflow.com'
    @hostURL = 'http://127.0.0.1:20000/requests/add'
    #This is a post request that needs to post json to my recieveing crawler
    res = Net::HTTP.post_form(URI.parse(@hostURL),
    {'url' =>  @stringParams})
    #puts res.body

Я знаю, как создать JSONобъект из хеша

 @myHash = HASH.new
    @myHash =
    {
      "url" => 'www.stackoverflow.com'
       #Assume theres more than one variable
    }

@myJsonHash = @myHash.to_json

Итак, вопрос для A заключается в том, как отправить этот @myJsonHash в запросе на публикацию.Или это действительно глупо, и я неправильно понял требования?

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Вы получите данные в параметрах.Вы должны знать, какие параметры содержат что.

def receive
  @object = Object.new({:name => params[:name], :address => params[:address] })
  if @object.save
    #ok
  else
    #error
  end
end

Остерегайтесь постов между сайтами, вы должны реализовать какую-то аутентификацию.

0 голосов
/ 11 июля 2011

между приложением A и приложением B существует уровень связи: HTTP

HTTP определяет типы запросов, одним из которых является POST

, когда запрос POST попадает в ваше приложение rails - все данные POST будутбыть доступным через params метод в ваших контроллерах

лучше начать с объяснения того, как приложение должно отправлять почтовый запрос

, посмотрите на этот драгоценный камень: httparty

позволяет отправлять все виды запросов с минимальным количеством кода:

class BParty
  include HTTParty

  base 'http://b'

  def self.pass(object)
    post('/receive', :body => {:object => object.to_json})
  end
end

Выполнение запросов к приложению B теперь просто, как

BParty.pass(object)      

.,теперь на стороне приложения B вам нужно будет сделать только это:

@object = JSON.decode(params[:object])

надеюсь, это поможет, не пинайте меня, если я сделал опечатки - весь код из головы без тестирования

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