質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

531閲覧

HerokuでRESTful APIのpostを動かしたい

tm_rhcp

総合スコア17

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2017/09/28 13:24

編集2022/01/12 10:55

HerokuでRESTfulなAPIを返すサーバーを立てたいのですがpostがうまく動きません。(getは動いています)
Laravel5.5で開発中です。

ローカルのサーバーではgetもpostもうまく動く事が確認出来たのでHerokuにアップしたのですが、
Heroku側ではpostが動きません。(データの登録ができません)

必要なカラムを埋めてpostをすると下記のようなものが返ってきます。

{ "data": [] }

ローカルもHerokuもpostmanを使って試しています。

▼ローカルの環境
サーバー: Apache
DB: MySql

▼Herokuの環境
サーバー: Apache?(デフォルトです)
DB: MySql

「heroku run bash」でHerokuの中に入ってからtinkerでモデルに直接データを入れることは出来ました。

postする際にheaderに仕込む値とか認証の知識があまいので、そこになにか問題があるのではないかなと予想はしているのですが、今のところどれを仕込めばよいのかわかっていません…。

なにかご存知でしたらよろしくお願い致します。

▼▼▼▼▼ 以下、追記(2017.10月1日) ▼▼▼▼
具体的なコードをお知らせします。

▼app/Http/Controllers/Book/BookController.php

<?php namespace App\Http\Controllers\Book; use App\Book; use Illuminate\Http\Request; use App\Http\Controllers\ApiController; class BookController extends ApiController { public function index() { $books = Book::all(); return $this->showAll($books); } public function create() { // } public function store(Request $request) { $rules = [ 'title' => 'required', 'author' => 'required', 'isbn' => 'required' ]; $this->validate($request, $rules); $data = $request->all(); $book = Book::create($data); return $this->showOne($book, 201); } public function show(Book $book) { return $this->showOne($book); }

▼app/Traits/ApiResponser.php

<?php namespace App\Traits; use Illuminate\Support\Collection; use Illuminate\Database\Eloquent\Model; trait ApiResponser { private function successResponse($data, $code) { return response()->json($data, $code); } protected function errorResponse($message, $code) { return response()->json(['error'=>$message, 'code'=>$code], $code); } protected function showAll(Collection $collection, $code = 200) { return $this->successResponse(['data'=>$collection], $code); } protected function showOne(Model $model, $code = 200) { return $this->successResponse(['data'=>$model], $code); } }

▼app\Http\Controllers\ApiController

<?php namespace App\Http\Controllers; use App\Traits\ApiResponser; use Illuminate\Http\Request; class ApiController extends Controller { use ApiResponser; }

▼routes/api.php

<?php use Illuminate\Http\Request; /* * User */ Route::resource('users', 'User\UserController', ['except' => ['create', 'edit']]); /* * Book */ Route::resource('books', 'Book\BookController');

▼マイグレーションファイル

<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateBooksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('books', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->string('author'); $table->string('isbn'); $table->timestamps(); $table->softDeletes(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('books'); } }

postmanで送っているものは以下の通りです(bodyに返ってきているものはtinkerで直接保存できたものです)
イメージ説明

ちなみに今回はudemyの下記の口座を見ながら作っていまして、現在はセクション27付近まで見つつ実装しています。
▼参考にしている講座
https://www.udemy.com/restful-api-with-laravel-php-homestead-passport-hateoas/learn/v4/overview
▼上記コースの完成版のコード
https://github.com/JuanDMeGon/RESTful-API-with-Laravel-Definitive-Guide

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aro10

2017/09/29 08:26

現状の情報だけでは多分誰にもわからないと思うので、アクセスするURL例とそれに対応するルート定義の内容と、postの仕方(curlやpostman等を利用している等)、処理を行うコントローラの内容をサンプルとして記載してください。
tm_rhcp

2017/10/01 03:04

aro10様 反応頂きましてありがとうございます。具体的なコード等をアップしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問