Laravel REST资源可以';t张贴到API


Laravel REST Resource can't post to API

我已经在Laravel中构建了一个REST API,它目前正在使用MAMP本地运行,尽管我已经在实时服务器上尝试过,但也出现了同样的问题。

当我试图将我的表单发布到API时,除非我同时让Artisan在不同的端口号上为网站提供服务,并发布到该URL(即www.mysite.com:2834/API/curses),否则它不起作用。我可以在浏览器中获取页面,没有问题,只是发布导致了问题。

我启用了COR,并尝试使用PostMan进行相同的POST请求,但它给出了相同的结果,即当我发布到的只是普通URL www.mysite.com/api/courses时,它不起作用,但当我在另一个端口上运行Artisan并发布到www.mysite.com:2834/api/curses时它起作用。

奇怪的是,当使用CURL:完成时,POST在没有Artisan运行的情况下工作

         curl -i -H "X-Requested-With: XMLHttpRequest" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://www.mysite.io/api/courses  --data "&author=tertertert&name=ertertert&description=ertertret&price=ertretret"

这是我的路线列表:

            |        | GET|HEAD                       | api/courses                                            | api.courses.index    | App'Http'Controllers'CourseController@index                | web,cors                                        |
            |        | POST                           | api/courses                                            | api.courses.store    | App'Http'Controllers'CourseController@store                | web,cors                                        |
            |        | GET|HEAD                       | api/courses/{courses}                                  | api.courses.show     | App'Http'Controllers'CourseController@show                 | web,cors                                        |
            |        | PUT|PATCH                      | api/courses/{courses}                                  | api.courses.update   | App'Http'Controllers'CourseController@update               | web,cors                                        |
            |        | DELETE                         | api/courses/{courses}                                  | api.courses.destroy  | App'Http'Controllers'CourseController@destroy              | web,cors                                        |

和我的控制器:

            <?php
            namespace App'Http'Controllers;
            use App'Course;
            use App'Http'Requests;
            use App'Http'Requests'CourseForm;

            class CourseController extends Controller
            {
                /**
                 * Display a listing of the resource.
                 *
                 * @return 'Illuminate'Http'Response
                 */
                public function index()
                {
                    $courses = Course::all();
                    return response()->json(['courses' => $courses]);
                }
                /**
                 * @param CourseForm $request
                 * @return 'Illuminate'Http'JsonResponse
                 */
                public function store(CourseForm $request)
                {
                        $course = new Course();
                        $course->author = $request->input('author');
                        $course->name = $request->input('name');
                        $course->description = $request->input('description');
                        $course->price = $request->input('price');
                        $course->save();
                        return response()->json(['message' => 'Course saved']);
                }
                /**
                 * Display the specified resource.
                 *
                 * @param  int  $id
                 * @return 'Illuminate'Http'Response
                 */
                public function show($id)
                {
                    $course = Course::find($id);
                    return response()->json(['course' => $course]);
                }
                /**
                 * Update the specified resource in storage.
                 *
                 * @param  'Illuminate'Http'Request  $request
                 * @param  int  $id
                 * @return 'Illuminate'Http'Response
                 */
                public function update(CourseForm $request, $id)
                {
                    if($request->ajax())
                    {
                        $course = Course::find($id);
                        $course->author = $request->input('author');
                        $course->name = $request->input('name');
                        $course->description = $request->input('description');
                        $course->price = $request->input('price');
                        $course->save();
                        return response()->json(['message' => 'Course updated']);
                    }
                }
                /**
                 * Remove the specified resource from storage.
                 *
                 * @param  int  $id
                 * @return 'Illuminate'Http'Response
                 */
                public function destroy($id)
                {
                    $course = Course::find($id);
                    $course->delete();
                    return response()->json(['message' => 'Course removed']);
                }
            }

和我的路线文件:

            <?php
            Route::group(['prefix' => 'api', 'middleware' => ['cors']], function(){
                Route::resource('courses', 'CourseController', ['except' => [
                    'create', 'edit'
                ]]);
            });
            Route::group(['prefix' => 'api', 'middleware' => ['cors']], function(){
                Route::resource('test', 'HomepageController@index');
                Route::resource('projects', 'ProjectController@index');
            });

            Route::controllers([
                'auth'     => 'Auth'AuthController',
                'password' => 'Auth'PasswordController',
            ]);

            Route::group(['before' => 'auth', 'middleware' => ['auth']], function() {
            Route::get('/admin/','DashboardController@overview');

            });

                //Route::get('/test', 'HomepageController@index');

女士们,先生们,真是面面俱到我想明白了到底出了什么问题。。。是url末尾的斜杠把这一切搞砸了。。