Веб-служба REST 404 не найдена — ColdFusion 11

Я создал новую функцию в существующем REST cfc, но когда я пытаюсь ее вызвать, я получаю ошибку 404, в то время как остальные функции работают. Все функции имеют ту же структуру, что и та, которую я собираюсь связать ниже, без каких-либо проблем.

Я видел другой пост, похожий на мой, но не нашел в нем ответов. Это ссылка на другой пост здесь

<cfcomponent restpath="student" rest="true">
<cffunction name="npssummary" access="remote" output="false" returntype="any" httpmethod="get" restpath="npssummary" produces="application/json">   

        <cfquery name="nps_summary" datasource="dpsigweb2">
            select top 10 * from contact
        </cfquery>

        <cfreturn serializeJSON(nps_summary,"struct")>

  </cffunction>
</cfcomponent>

И вот как я это называю

<cfhttp url="http://dev.example.com/rest/IIT/student/npssummary" method="get">
<cfset results = "#cfhttp#">
<cfdump var="#results#">

Когда я пытаюсь вызвать функцию прямо в браузере, я получаю ожидаемый результат.

Кроме того, я использую эту функцию для сброса служб REST каждый раз, когда я вношу изменения в свой компонент, пока он работает так, как ожидалось.

<cftry>
<cfset restInitApplication("Z:\Sites\testSites\API\","IIT")>

<cfcatch type="any">
    <cfdump var="#cfcatch#">
</cfcatch>
</cftry>

person Geo    schedule 27.01.2015    source источник
comment
Можете ли вы опубликовать полный CFC, содержащий один метод, который РАБОТАЕТ, и один, который не работает? Кроме того, как вы называете каждого из них.   -  person Adam Cameron    schedule 28.01.2015
comment
Я изменю свои функции и выложу все cfc   -  person Geo    schedule 28.01.2015
comment
Ваше здоровье. Достаточно, чтобы воспроизвести ситуацию, а не тонны и тонны кода.   -  person Adam Cameron    schedule 28.01.2015
comment
Я думаю, что только что нашел свою проблему... Параметры, которые я отправлял методу, были слишком большими... есть ли такая вещь? <cfhttpparam type="URL" name="DoctorIDs" value="2008013110482896439177,2010080209524690985587,2003051416543440840952"> Но представьте, что у него есть еще около 100 идентификаторов @AdamCameron   -  person Geo    schedule 28.01.2015
comment
Что ж, это достаточно легко проверить/(опровергнуть) доказать. Тем не менее, я бы не ожидал, что такая длинная строка вызовет у вас проблемы. И если бы это было так, я бы не ожидал 404.   -  person Adam Cameron    schedule 28.01.2015
comment
Я удалил «несколько» идентификаторов из моих параметров, входящих в функцию, и это сработало.   -  person Geo    schedule 28.01.2015
comment
@AdamCameron После пары тестов кажется, что размер моих параметров вызывает проблему. Есть ли другая переменная, кроме типа URL, которая может поддерживать более длинную строку?   -  person Geo    schedule 28.01.2015
comment
Не то чтобы я в курсе. Я соберу войска, чтобы узнать, знает ли кто-нибудь еще...   -  person Adam Cameron    schedule 28.01.2015
comment
Если вы отправляете так много по сети, в URL-адресе... вам может потребоваться рассмотреть новую конечную точку, которая может поддерживать POST. URL-адреса могут поддерживать только около 2000 символов плюс-минус. Поэтому, если вы публикуете вместо получения, это должно работать. Но если у вас есть ИСТИННЫЕ конечные точки отдыха, а сообщение будет вызывать другой обработчик, вам понадобится еще одна КОНЕЧНАЯ ТОЧКА, чтобы она не конфликтовала.   -  person Gavin Pickin    schedule 28.01.2015
comment
@GavinPickin, ваш метод имеет смысл, у вас есть ссылка, по которой я могу перейти и узнать больше об ограничениях такого рода?   -  person Geo    schedule 28.01.2015


Ответы (1)


Это ограничение браузера:

Microsoft Internet Explorer имеет максимальную длину универсального указателя ресурса (URL) 2083 символа. Internet Explorer также имеет максимальную длину пути 2048 символов. Это ограничение применяется как к POST-запросам, так и к URL-адресам GET-запросов.

Если вы используете метод GET, вы ограничены максимум 2048 символами минус количество символов в фактическом пути.

Однако метод POST не ограничивается размером URL-адреса для отправки пар имя/значение. Эти пары передаются в заголовке, а не в URL.

RFC 2616, Протокол передачи гипертекста — HTTP/1.1, не устанавливает каких-либо требований к длине URL-адреса.

person Adrian J. Moreno    schedule 28.01.2015