Язык Wolfram Language

Облачное хранение и веб-интерфейсы

Управление протоколом передачи гипертекста (HTTP) для системы мониторинга космической станции

Вы можете контролировать точные характеристики ответа HTTP на базе объекта находящегося в системе файлов с помощью функции HTTPResponse. Отчеты об ошибках могут быть обработаны и разрешены с помощью функции HTTPErrorResponse.

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

код на языке Wolfram Language целиком
In[1]:=
Click for copyable input
issLocationDisplay[] := Module[{pos, posline, country, city, distance}, {pos, posline} = SatelliteData[ Entity["Satellite", "25544"], {"Position", "PositionLine"}]; country = First[GeoNearest["Country", pos]]; distance = Round[GeoDistance[pos, country], 0.1]; Panel@Column[{Row[{"ISS Position: ", Style[If[distance <= Quantity[0., "Miles"], "over " <> First[GeoNearest["City", pos]]["Name"] <> ", " <> country["Name"], ToString[ Row[{"over the open sea ", distance, " from ", country["Name"]}]]], Darker[Blue]]}, BaseStyle -> Directive["FontFamily" -> "SansSerif", RGBColor["#497CA4"], Larger, Bold]], GeoGraphics[{Gray, Thickness[.005], Arrowheads[{{0.05, 0.4}, {0.05, 0.13}}], Arrow @@ posline, Red, PointSize[.01], Point[pos], Opacity[.1], Black, GeoVisibleRegion[pos]}, GeoCenter -> pos, GeoRange -> "World", ImageSize -> 600]}]]
In[2]:=
Click for copyable input
issLocationDisplay[]
Out[2]=

Воспользуемся объектом файловой системы, который обновляет результат, используя функцию HTTPResponse, чтобы указать тип содержания и заголовок в полученных результатах. Эти данные, в свою очередь, сообщают браузеру, что кэшировать результат не нужно.

In[3]:=
Click for copyable input
obj = CloudDeploy[ Delayed[HTTPResponse[ ExportString[issLocationDisplay[], "PNG"], <| "ContentType" -> "image/png", "Headers" -> {"Cache-Control" -> "no-cache"}|>]], CloudObject["iss-location"], Permissions -> "Public"]
Out[3]=

Закроем доступ к файловой системе для определенных пользователей с помощью функции HTTPErrorResponse.

In[4]:=
Click for copyable input
obj = CloudDeploy[Delayed[ If[MemberQ[{"badapple@example.com", "blackhat@example.com", "spammer@example.com"}, $WolframID], HTTPErrorResponse[403], HTTPResponse[ issLocationDisplay[], <| "Headers" -> {"Cache-Control" -> "no-cache"}|>] ]], CloudObject["iss-location"], Permissions -> "Public"]
Out[4]=

Родственные примеры

de en es fr ja ko pt-br zh