Digamos que você tenha um aplicativo RESTful Rails para o qual precisa fazer uma solicitação de postagem de um script PHP. Não é minha função perguntar por que você teria uma criação mutante, mas aqui está como você faria isso:
Primeiro, desative a proteção CSRF em seu aplicativo Rails (você sabe que está com problemas quando a primeira coisa que você precisa fazer é desativar a proteção CSRF):
#/app/controller/application_controller.rb
protect_from_forgery :except => [:create, :update]
Agora, para fins de argumentação, digamos que seu script PHP está pegando um modelo exposto como JSON, alterando um atributo e, em seguida, atualizando-o de volta para o servidor.
Primeiro, vamos pegar o JSON e definir a variável
$json = file_get_contents("http://0.0.0.0:3000/my_modesl/13.json")
$model = json_decode($json)
$model->my_attribute = "foo"
Uma vez que este modelo será eventualmente re-serializado e PUT de volta ao servidor, precisamos nos livrar dos atributos created_at
e updated_at
, uma vez que eles não sãoattribute_accessible
unset($model->created_at, $model->updated_at)
Agora prepararemos as solicitações HTTP mais básicas
$ url = ‘ http://0.0.0.0:3000/my_models/13.json ‘;
$ options = array (
‘http’ => array (
‘header’ => “Content-type: application / x-www-form-urlencoded r n”,
‘method’ => ‘PUT’,
‘content’ = > consulta de construção http (array (‘my_model’ => $ model)),
),
);
Observe como o $model
objeto deve ser empacotado em um array. É assim que Rails gosta. Para finalizar, enviaremos o pedido.
$context = stream_context_create($options);
$result = @file_get_contents($url, false, $context);
Heh, observe o @
na frente de file_get_contents
? Isso é para suprimir quaisquer erros ou avisos que possam surgir e é totalmente opcional.
Parabéns, você criou um monstro!