2016-06-03 3 views
0

У меня есть таблица под названием «оценки», которая имеет два поля: team_id и score_value. Мне нужно вставить записи в эту таблицу, используя HTTP-вызов, например, баллы/команды/{team_id} (POST).Как правильно писать API-интерфейсы

public function($team_id,$score){ 
$scores = new Scores(); 
$scores->team_id = $team_id; 
$scores->score_value = $score; 
$scores->save(); 
} 

я мог бы сделать то же самое с баллами/командами (POST), так что я на самом деле не нужно передать team_id как параметр, так как я могу получить, что поле внутри функции вставки, как показано ниже:

public function($score){ 
$scores = new Scores(); 
$scores->team_id = Auth->user->team_id; (logged in user team id) 
$scores->score_value = $score; 
$scores->save(); 
} 

Какой из этих двух вариантов был бы лучшим вариантом и, конечно, более гибким?

Если у меня есть второй вариант, я должен всегда передавать команду team_id из передней части, это было бы безопасно? Я имею в виду безопасно хранить user_id пользователя в localStorage или как вы справляетесь с этим делом?

ответ

0

Прежде всего, я надеюсь, что в обоих сценариях пользователь имеет право обновлять баллы, иначе любой может испортить ваши данные.
Лично я предпочел бы второй сценарий, так как вы отправили POST в неизвестное местоположение (приложение решает, какой из команд_и_ид использовать, на основе данных auth). В первом сценарии я бы использовал PUT вместо этого, вы можете узнать больше о PUT vs POST здесь http://restcookbook.com/HTTP%20Methods/put-vs-post/
Я также думаю, что второй вариант более гибкий и требует меньше проверок безопасности, так как вам не нужно сравнивать полученный team_id против входа в идентификатор команды пользователя.

Смежные вопросы