小编Don*_*joe的帖子

在预检响应中,Access-Control-Allow-Methods不允许使用方法PUT

我一直在开发一个与PHP/Apache Web服务对话的Angular JS应用程序.

到目前为止它一直在POST和GET请求工作正常,但对于PUT我有以下错误

Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.

我已经用Postman测试了API,它运行得很好

有什么想法来解决我的问题吗?谢谢

请注意,API服务器Apache已经具有以下配置

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Options All
AllowOverride All
Allow from all
Run Code Online (Sandbox Code Playgroud)

Chrome有这个响应标题

HTTP/1.1 200 OK
Date: Mon, 15 Feb 2016 02:52:56 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Allow: GET,HEAD,PUT,PATCH,DELETE
Cache-Control: no-cache
Set-Cookie: laravel_session=eyJpdiI6IldvM3Z5eUpKcUI5Q0RXam5UN283TEE9PSIsInZhbHVlIjoiV3FnTVpUcFliWjZvczFrM2VuYXpBamI5NmIwR24rdThPWGRuMUZjbjd5K0I2N3F1REp4ZFJVc3U3QnhCZmxmZ0ZONDU4SEVtWm42SUVEWmJhRmF6M1E9PSIsIm1hYyI6ImMzOTVlNDZhZmNjYWNlM2I1N2FjYjQ4N2FhZDc5ZWY2MWJhYTdiNDBlMWExMGJkYzczYzE1MTczMzAyYzVkMjEifQ%3D%3D; expires=Mon, 15-Feb-2016 04:52:56 GMT; Max-Age=7200; path=/; httponly
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type,   Accept
Content-Length: …
Run Code Online (Sandbox Code Playgroud)

apache cors angularjs

11
推荐指数
1
解决办法
1万
查看次数

Symfony Doctrine 实体管理器和存储库

我理解好处或存储库模式,但我无法理解在 Symfony3 Doctrine 中有Doctrine\ORM\EntityManager\Doctrine\ORM\EntityRepository

  1. 两者有什么区别?
  2. 应该将存储库注入控制器还是实体管理器?

    编辑 正确的问题应该是:从控制器访问存储库的正确方法是什么?

    • 应该将存储库作为服务注入控制器吗?
    • 应该将存储库作为服务注入到另一个服务中吗?
  3. 实体管理器是否应该包含任何查询?
    编辑 正确的问题应该是:服务是否应该包含查询?@MateuszSip 已经解释过了,可以通过注入实体管理器来完成

  4. 是否应该将自定义功能getAvailableManagers放在存储库或服务中?(manager存储库在哪里,确定有一些逻辑available manager

  5. 一个更通用的函数怎么样findAllManager,它应该在存储库还是实体管理器中?

目前我正在使用 Symfony3。非常感谢

干杯,

编辑 与@MateuszSip 交谈(感谢队友),我决定用下面的例子让我的问题更清楚。请注意,下面的代码并不代表真正的问题

控制器

Class ManagementController
{
    public function assignManager($projectType)
    {
        // Grabbing a service
        $s = $this->get('mycompany_management_management_service')

        $managers = $s->findAvailableManagers();
        $managers = $s->checkCapability($managers, $projectType);

        return $managers
    }
}
Run Code Online (Sandbox Code Playgroud)

存储库

class ManagerRepository extends \Doctrine\ORM\EntityRepository
{
    public function findAvailableManagers() 
    {
        ...
        return $managers
    }

    public function checkCapability($managers, $type)
    {
        ... …
Run Code Online (Sandbox Code Playgroud)

doctrine repository-design repository-pattern symfony doctrine-orm

6
推荐指数
1
解决办法
4082
查看次数

Laravel 单元测试 - POST 请求有效负载

我需要帮助为 Laravel 创建单元测试用例。它是一个 API 端点,接受 json 作为 POST 有效负载(不是 POST 表单),并且基本上只是基于该 json 对象在数据库中创建一个条目。API 工作正常,但我在创建单元测试时遇到问题。

控制器代码包含

$request = Request::instance();
$content = $request->getContent();
$inputRequest = json_decode($content);
Run Code Online (Sandbox Code Playgroud)

我不知道如何将有效负载传递到单元测试代码中(扩展 Illuminate\Foundation\Testing\TestCase

任何人都可以提供帮助?

谢谢堆

php phpunit laravel

5
推荐指数
1
解决办法
4919
查看次数

phpunit和http内容类型

我有一个用Laravel(Dingo)构建的API,它运行得很好.但是我在实现phpunit来测试我的API时遇到了问题

class ProductControllerTest extends TestCase
{
    public function testInsertProductCase()
    {
        $data = array(
            , "description" => "Expensive Pen"
            , "price" => 100
        );

        $server = array();                        
        $this->be($this->apiUser);
        $this->response = $this->call('POST', '/products', [], [], $server, json_encode($data));
        $this->assertTrue($this->response->isOk());
        $this->assertJson($this->response->getContent());
    }

}
Run Code Online (Sandbox Code Playgroud)

同时我的API端点指向此控制器功能

private function store()
{

    // This always returns null
    $shortInput = Input::only("price");
    $rules = [
            "price" => ["required"]
    ];
    $validator = Validator::make($shortInput, $rules);

    // the code continues
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是它总是失败,因为API无法识别有效负载.Input :: getContent()返回JSON,但Input :: only()返回空白.进一步调查这是因为如果请求有效负载的内容类型是JSON,则Input :: only()仅返回值

那么......如何设置上面的phpunit代码以使用内容类型的application/json?我假设它必须与之有关$server但我不知道是什么

编辑:我原来的想法实际上有两个问题 …

rest phpunit laravel dingo-api

3
推荐指数
1
解决办法
2791
查看次数

Buildkite和webhook到git repo

我有一个Buildkite管道运行,但我们最近改变了我们的git仓库.如何将新仓库挂钩到现有管道?

我知道你可以更改repo url,但webhook网址怎么样?

似乎无法在任何地方找到答案.

谢谢您的帮助

git webhooks buildkite

3
推荐指数
1
解决办法
173
查看次数

Symfony和域驱动设计

在Symfony 3中,您如何根据域驱动设计(DDD)区分以下内容?

  • 服务(在配置服务文件中定义的服务)
  • 教义存储库(\ Doctrine \ ORM \ EntityRepository)
  • 实体(实体文件夹中的类)

我知道该学说与Symfony脱钩了(即可以完全省略)。但是,没有教义的Symfony项目中的存储库是哪一个呢?也许Symfony(没有教义)实际上不是真的遵循DDD吗?

编辑

我尝试模拟以下情况以使问题更清楚

控制器具有返回项目的所有可用经理的功能

class ManagementController
    public function getAvailableManagers(Array $project)
    {
        ...
    }
}    
Run Code Online (Sandbox Code Playgroud)

可用的经理意味着他们手头上没有任何项目,并且该项目属于其专业领域(例如,客户服务,业务关系,物流等)

但是,由于设计不佳,专用域未存储在数据库中,而是需要通过API调用被调用到单独的HR系统。稍后将其集成到数据库中

我本以为(随时可以纠正我)管理器应该是一个存储库类,因为它当前从2个不同的来源获取其信息。问题是……我应该为此使用教义存储库吗?还是应该只是普通实体或服务?

class ReplacementInstructionRepository extends \Doctrine\ORM\EntityRepository
{
    private $id;
    private $name;
    private $speciality;
    private $projects;
}
Run Code Online (Sandbox Code Playgroud)

我需要有关如何拆分的指南。谢谢

干杯,

doctrine domain-driven-design symfony

1
推荐指数
1
解决办法
2199
查看次数

如何拆分木偶文件

只是想知道我是否有以下puppet文件,我想将它们分成单独的文件.我必须创建模块吗?我不能只包括它们吗?

node default {
  include mysql
}


class mysql {

  # Make sure MySQL is ...
  notify {"Mysql":}

  # installed
  package { 'mysql':
  require => Exec['apt-update'], # require 'apt-update' before installing
  ensure => installed,
  }

  # and running
  service { 'mysql':
    ensure => running,
    enable => true,
  }
}

...
Run Code Online (Sandbox Code Playgroud)

我只是想把mysql类拿出来放在单独的文件中.怎么做这个简单的事情?顺便说一句,我正在使用无主的木偶

编辑

很大的道歉,事实是我只使用没有流浪汉的傀儡.但由于我不是一个专家,当我的问题有一个修改,包括流浪汉我接受了它.对不起,请允许我修改我的问题

我可以在没有流浪汉的情况下进行分离吗?如果我必须如此.

谢谢

puppet devops

1
推荐指数
1
解决办法
464
查看次数