CF11 против CF2018 REST 404 Ответ - PullRequest
4 голосов
/ 19 июня 2019

У меня есть служба REST, которая либо выводит JSON, либо возвращает 404, в зависимости от того, есть ли совпадение. В моей существующей установке CF11 я могу сгенерировать 404 с

<cfthrow errorcode="404">

но это, по-видимому, больше не работает в CF2018. Чтобы сгенерировать 404, мне нужно использовать Java (как указано здесь: Как я могу отправить код состояния HTTP и ответные сообщения клиенту в ColdFusion? ):

<cfscript>
    getPageContext()
    .getResponse()
    .getResponse()
    .sendError( JavaCast( 'int', 404 ), "" );
</cfscript>

Это работает, но мне стало любопытно, поэтому я создал небольшую тестовую страницу (не REST-сервис):

<cfparam name="URL.method" default="cfthrow" >
<cfif URL.method IS "cfthrow">
    <cftry>
        <cfthrow errorcode="404">
        <cfcatch></cfcatch>
    </cftry>
</cfif>
<cfif URL.method IS "cfheader">
    <cfheader statuscode="404">
</cfif>
<cfif URL.method IS "java">
    <cfscript>
        getPageContext()
            .getResponse()
            .getResponse()
            .sendError( JavaCast( 'int', 404 ), "" );
    </cfscript>
</cfif>

Я тоже не могу заставить работать здесь. Но cfheader работает, и, как и ожидалось, Java тоже работает. Кто-нибудь может объяснить, почему существуют все эти различия? К вашему сведению, я использую Win2012 / IIS. Спасибо.

p.s. С моим существующим сервисом REST на CF11 я так и не смог получить

<cfheader statuscode="404">

для работы либо для генерации 404. Во всех случаях, когда я говорю, что 404 не работает, возвращается пустая страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...