小编Nor*_*gul的帖子

JSON Simple:整数解析

我在REST服务中解析JSON整数时遇到问题.解析String和double类型工作正常

工作:

JSONParser parser = new JSONParser();
Object obj = null;
try {
    obj = parser.parse(input);
} catch (ParseException e) {
    e.printStackTrace();
}
JSONObject jsonObject = (JSONObject) obj;   

//---------------
String uName = (String) jsonObject.get("userName");
double iPrice = (Double) jsonObject.get("itemPrice");
Run Code Online (Sandbox Code Playgroud)

不工作:

int baskId = (Integer) jsonObject.get("basketId");
Run Code Online (Sandbox Code Playgroud)

我试图将basketId我的篮子类转换为String,然后它运行正常,所以代码没问题,链接正常,但是,当我把它转回int时,我得到500服务器错误.我用它来创建一个带有一些数字ID的新篮子,所以我使用@POST注释,有效载荷中的JSON如下:

{"basketId":50}
Run Code Online (Sandbox Code Playgroud)

我不明白......

编辑:我确实得到它... JSON simple接受更大类型的Java原语,所以整数和浮点数是禁止的

java rest post json

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

在Alpine Linux上的Oracle

我正在尝试在Alpine Linux Docker环境上安装OCI8扩展。尽管有很多地方说它行不通,但有些地方说它确实行得通。我有一个3.4版本,由于公司原因,它现在仍然保持这种状态。

我已经在Docker conf中完成了此操作:

# Install Oracle Client and build OCI8 (Oracel Command Interface 8 - PHP extension)
USER root
ENV LD_LIBRARY_PATH=/usr/local/instantclient
ENV ORACLE_HOME=/usr/local/instantclient

RUN apk update && apk upgrade
RUN apk add musl-dev libaio autoconf && apk add --update make

## Unzip Instant Client v12
RUN pecl channel-update pecl.php.net
COPY instantclient_12_2.zip /var/www/html/instantclient_12_2.zip
RUN unzip -d /usr/local/ /var/www/html/instantclient_12_2.zip
RUN ln -s /usr/local/instantclient_12_2 /${ORACLE_HOME} && \
    ln -s /${ORACLE_HOME}/libclntsh.so.* /${ORACLE_HOME}/libclntsh.so && \
    ln -s /${ORACLE_HOME}/libocci.so.* /${ORACLE_HOME}/libocci.so && \ …
Run Code Online (Sandbox Code Playgroud)

php oracle docker alpine-linux

5
推荐指数
2
解决办法
3241
查看次数

带有FakeItEasy的.NET核心

可以FakeItEasy与.NET的核心工作?我已经通过NuGet安装了它,但我不能在项目中引用它,using FakeItEasy因为它找不到它.我已经检查了NuGet依赖项,我将其视为FakeItEasy (3.3.2)

.net fakeiteasy .net-core

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

Laravel 命名空间路线

我的控制器位于与 Laravel native 不同的文件夹中App\Http\Controllers。我正在使用一个自定义Lib\MyApp文件夹,其中包含模块。每个模块都有自己的控制器、模型等。我添加了composer.json自动加载到app\lib.

我所做的是更改RouteServiceProvider命名空间:

protected $namespace = 'App\Lib\MyApp';
Run Code Online (Sandbox Code Playgroud)

我做了composer dump-autoload一切之后。

里面MyApp是一个Landing\Controller文件夹,里面有实际的控制器类。

尝试 1(理想):

我想这样称呼我的路线:

Route::get('/', 'Landing\Controller\LandingController@index');
Run Code Online (Sandbox Code Playgroud)

但这样我就得到了ReflectionException即使没有找到该类

尝试2:

Route::get('/', '\Landing\Controller\LandingController@index');
Run Code Online (Sandbox Code Playgroud)

当我刷新页面时,尾部斜杠会删除名称空间部分,并且类仍然被认为不存在。

尝试3:

Route::get('/', 'MyApp\Landing\Controller\LandingController@index');
Run Code Online (Sandbox Code Playgroud)

这只是复制MyApp文件夹,并且未按预期找到类。

尝试4(工作,但不想要这样)

Route::get('/', '\MyApp\Landing\Controller\LandingController@index');
Run Code Online (Sandbox Code Playgroud)

虽然我想去掉这个\MyApp\部分,但效果很好。

这样的事情可能吗?

php routes laravel

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

验证请求后验证钩子

我可以在验证挂钩(文档)后附加到我的自定义请求php artisan make:request吗?

php laravel laravel-5 laravel-validation laravel-request

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

在 Alpine 上运行 nginx

我想在容器启动时运行 nginx 和 php-fpm,但我似乎无法这样做。这是我的Dockerfile

FROM php:7-fpm-alpine

EXPOSE 9080 8000
EXPOSE 9088 80

WORKDIR /var/www
COPY . .

RUN apk add nginx composer php7-fpm && \
    composer install --no-progress && \
    mkdir -p /etc/nginx /etc/nginx/sites-available /etc/nginx/sites-enabled /run/nginx && \
    ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.conf && \
    cp nginx.conf /etc/nginx/conf.d/default.conf

CMD ["nginx", "-g", "daemon off;"]
Run Code Online (Sandbox Code Playgroud)

容器启动并运行,但是当我运行ps auxnginx时,在我运行nginx命令之前无处可见(配置正常,nginx -t返回正常,并且通过打开的容器运行它确实启动了服务)。

我试图链接,RUN php-fpm7 && nginx但没有任何作用。

也像使用入口点一样ENTRYPOINT ["nginx"]对我没有任何帮助。

如何确保这些进程在创建容器时正在运行?

php nginx docker dockerfile

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

在Laravel中的PHP类型提示

我想知道在方法参数中使用类型提示是否有任何区别,例如:

function xyz (UserRepository $repo)
Run Code Online (Sandbox Code Playgroud)

并使用注释做同样的事情:

function xyz ($repo)
    /* @var UserRepository $repo */ 
Run Code Online (Sandbox Code Playgroud)

php laravel

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

Laravel foreaching 随机模型

我对A M使播种机:M的关系,我想1安装WidgetWorkspaceItem90%的情况下,其他5%2,最后5%3。

$widgets = Widget::all();
$workspaceItems = WorkspaceItem::all();

foreach ($workspaceItems as $workspaceItem) {
    $numberBetween = $faker->numberBetween(0, 100);

    if ($numberBetween > 95) {
        $widgetsToSeed = $widgets->random(3);
    } else if ($numberBetween > 90 && $numberBetween <= 95) {
        $widgetsToSeed = $widgets->random(2);
    } else {
        $widgetsToSeed = $widgets->random();
    }

    foreach ($widgetsToSeed as $widget) {
        $workspaceItem->widgets()->attach($widget->id, [...]);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:我无法使用,sync()因为我有数据透视表的附加属性。

如果 I dd($widgetsToSeed),我确实会得到随机小部件。但是一旦它进入循环,dd($widget)我就没有得到模型,而只是true. 似乎是什么问题?

php database seed laravel laravel-7

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

刷新后 OneSignal 注册失败

我在我的 Laravel/Vue 应用程序中使用 OneSignal。我已将其包含<head>在文档中:

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
<script>
    var OneSignal = window.OneSignal || [];
    OneSignal.push(function() {
        OneSignal.init({
            appId: "{{ env('ONESIGNAL_APP_ID') }}"
        });
        OneSignal.showNativePrompt();
    });
</script>

<script>

    if ('serviceWorker' in navigator) {
        navigator.serviceWorker.register('/OneSignalSDKWorker.js')
            .then(function () {
                console.log('Service worker registered');
            })
            .catch(function (error) {
                console.log('Service worker registration failed:', error);
            });
    } else {
        console.log('Service workers are not supported.');
    }

</script>
Run Code Online (Sandbox Code Playgroud)

我也有自己的 service worker,所以我也遵循了这里的文档。

硬重置后发生的事情是安装了 Service Worker 并且一切正常,但是一旦我刷新页面,我就会得到:

OneSignalPageSDKES6.js?v=151102:1 Uncaught (in promise) InvalidStateError: 当前环境不支持此操作。在 Xe处的 Function.getServiceWorkerHref ( https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151102:1:41510 )。(https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151102:1:144028) at Generator.next …

push push-notification laravel onesignal vuejs2

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

Laravel 命令短选项

我正在 Laravel 中制作自定义 Artisan 命令,我想传递选项。然而,我看到例如make:controller可以选择通过传入-r或 来创建资源控制器--resource。我的命令现在定义如下:

protected $signature = 'make {name} {--flag=?}';
Run Code Online (Sandbox Code Playgroud)

但是当我执行-hfor 命令帮助时,我只看到--flag一个选项。我想提供一个选项来编写-f并传入标志。

我试过这样

protected $signature = 'make {name} {-f=?} {--flag=?}';
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

php command laravel laravel-artisan

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