Wolfram Language

Cloud & Web Interfaces

Web-Response für einen Raumsstations-Tracker steuern

Sie können die exakten Features der HTTP-Response eines Cloud-Objekts steuern, indem Sie eine HTTPResponse zurückgeben. Fehlerzustände können mit HTTPErrorResponse behandelt werden.

Bestimmen Sie eine Funktion, die die Stadt findet, die am nächsten zur aktuellen Position der International Space Station gelegen ist. Die Raumstation bewegt sich schnell, daher ändern sich die Ergebnisse sehr rasch.

Den kompletten Wolfram Language-Input zeigen
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]=

Stellen Sie ein Cloud-Objekt bereit, das das Ergebnis jedes Mal aufs Neue berechnet. Geben Sie mit HTTPResponse den Inhaltstyp an und bestimmen Sie einen Header, der dem Browser mitteilt, das Ergebnis nicht zu chachen.

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]=

Blockieren Sie manche User, so dass sie das Cloud-Objekt nicht verwenden können. Diesen Usern wird eine HTTPErrorResponse zurückgegeben.

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]=

Verwandte Beispiele

en es fr ja ko pt-br ru zh