Автор Тема: RubyOnRails API PUT & DELETE requests response body  (Прочетена 3899 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

wicked92

  • Full Member
  • ***
  • Благодарности
  • -Казани: 13
  • -Получени: 7
  • Публикации: 178
RubyOnRails API PUT & DELETE requests response body
« -: 04 Февруари 2015, 12:33:31 »
Здравейте,

Пиша си API на Rails и ме интересува как мога да върна обекта, който променям/изтривам и съответно какъв трябва да е правилният
Status Code при PUT и DELETE заявките. За момента имам следното като отговор от сървъра:


Completed 204 No Content in 95ms (ActiveRecord: 87.0ms)

Status Code: 204 No Content



Ето ги  UsersController и  User model:

Код: Rails
  1. class UsersController < ApplicationController
  2.   protect_from_forgery with: :null_session
  3.   respond_to :json      
  4.  
  5.   # GET .../api/v1/users
  6.   def index
  7.     respond_with User.all
  8.   end
  9.  
  10.   # GET .../api/v1/users/id
  11.   def show
  12.     respond_with User.find(params[:id])
  13.   end
  14.  
  15.   # POST .../api/v1/users
  16.   def create
  17.     respond_with User.create(user_params)
  18.   end
  19.  
  20.   # PUT .../api/v1/users/id
  21.   def update
  22.     respond_with User.update(params[:id], user_params)
  23.   end
  24.  
  25.   # DELETE .../api/v1/users/id
  26.   def destroy
  27.     respond_with User.destroy(params[:id])
  28.   end
  29.  
  30.   private
  31.     def user_params
  32.       params.require(:user).permit(:username, :email)
  33.     end
  34.  
  35. end
  36.  
  37.  


Код: Rails
  1. class User < ActiveRecord::Base
  2.   validates :username, :email, presence: true,
  3.                                uniqueness: true
  4.   validates :username, length: { minimum: 5 }
  5.  
  6.   has_many :devices
  7.   validates_associated :devices
  8. end
  9.  
  10.  


Благодаря предварително!

« Последна редакция: 04 Февруари 2015, 13:35:45 от wicked92 »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: RubyOnRails API PUT & DELETE requests response body
« Отговор #1 -: 04 Февруари 2015, 15:11:02 »
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

wicked92

  • Full Member
  • ***
  • Благодарности
  • -Казани: 13
  • -Получени: 7
  • Публикации: 178
Re: RubyOnRails API PUT & DELETE requests response body
« Отговор #2 -: 04 Февруари 2015, 15:22:55 »
Благодаря. Това, което повече ме интересуваше в случая е как да върна обекта заедно с код 200. Ето го и промененият код:

Код: Rails
  1.   def create
  2.     #respond_with User.create(user_params)
  3.     @user = User.new(user_params)
  4.    
  5.     respond_to do |format|
  6.       if @user.save
  7.         format.json { render json: @user, status: :ok}
  8.       else
  9.         format.json { render json: @user.errors, status: :unprocessable_entity }
  10.       end
  11.     end
  12.   end
  13.  
  14.   # PUT .../api/v1/users/id
  15.   def update
  16.     #respond_with User.update(params[:id], user_params)
  17.     @user = User.find(params[:id])
  18.  
  19.     respond_to do |format|
  20.       if @user.update_attributes(user_params)
  21.         format.json { render json: @user, status: :ok }
  22.       else
  23.         format.json { render json: @user.errors, status: :unprocessable_entity }
  24.       end
  25.     end
  26.   end
  27.  
  28.   # DELETE .../api/v1/users/id
  29.   def destroy
  30.     #respond_with User.destroy(params[:id])
  31.     @user = User.find(params[:id])
  32.     @user.destroy
  33.    
  34.     respond_to do |format|
  35.       format.json { render json: @user, status: :ok }
  36.     end
  37.   end
  38.  

« Последна редакция: 04 Февруари 2015, 15:32:44 от wicked92 »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: RubyOnRails API PUT & DELETE requests response body
« Отговор #3 -: 04 Февруари 2015, 23:27:37 »
RoR ми е слаба страна ;(
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

wicked92

  • Full Member
  • ***
  • Благодарности
  • -Казани: 13
  • -Получени: 7
  • Публикации: 178
Re: RubyOnRails API PUT & DELETE requests response body
« Отговор #4 -: 05 Февруари 2015, 21:44:00 »
Аз започнах да се занимавам с него миналата седмица  ;D Немога да кажа, че и на мен ми е силна страна. Това което повече ме интересува е добри практики за имплементация на API и съответно установени решения на често срещани проблеми. Намерих един gem rails_api, който е доста по-лек, но като за начинаещ реших да карам по малко по-дълъг път, но поне ми е ясно какво се случва. Има доста gems и middlewares, които няма да ми трябват за API-то, но това в последствие ще го доизглаждам. Мисля след няколко месеца(1-2) да направя няколко урочета(текстови, че нямам нужните условия за видео) за API концепции и практики и да се направи едно малко проектче, но за момента съм на ниво яко четене и пробване :)


Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: RubyOnRails API PUT & DELETE requests response body
« Отговор #5 -: 05 Февруари 2015, 22:02:50 »
Еми супер, задълбавай. Уроци са добре дошли, особено за нещо толкова популярно като RESTful. Аз между другото тия дни видях един много лек PHP фреймърк, който е специлизиран за API-та и такива готини работи, та се сетих че ти преди време беше пуснал тема с такова питане. Предполагам че вече си се спрял на Rails, но все пак нещото се казва SlimFramework.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!