diff --git a/include/google/google_service_root.hpp b/include/google/google_service_root.hpp
index fd8aad4..d5d340a 100644
--- a/include/google/google_service_root.hpp
+++ b/include/google/google_service_root.hpp
@@ -118,8 +118,8 @@
     const ResolvedEntity& resolvedEntity)
 {
     asyncResp->res.jsonValue["@odata.type"] = "#RootOfTrust.v1_0_0.RootOfTrust";
-    asyncResp->res.jsonValue["@odata.id"] =
-        "/google/v1/RootOfTrustCollection/" + resolvedEntity.id;
+    asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+        "google", "v1", "RootOfTrustCollection", resolvedEntity.id);
 
     asyncResp->res.jsonValue["Status"]["State"] = "Enabled";
     asyncResp->res.jsonValue["Id"] = resolvedEntity.id;
diff --git a/redfish-core/include/utils/sw_utils.hpp b/redfish-core/include/utils/sw_utils.hpp
index 31c3ea3..aa3bd4f 100644
--- a/redfish-core/include/utils/sw_utils.hpp
+++ b/redfish-core/include/utils/sw_utils.hpp
@@ -3,6 +3,7 @@
 #include "dbus_utility.hpp"
 #include "error_messages.hpp"
 #include "generated/enums/resource.hpp"
+#include "http/utility.hpp"
 #include "utils/dbus_utils.hpp"
 
 #include <boost/system/error_code.hpp>
@@ -198,9 +199,9 @@
                         // /redfish/v1/UpdateService/FirmwareInventory/<Id>
                         // e.g. .../FirmwareInventory/82d3ec86
                         nlohmann::json::object_t member;
-                        member["@odata.id"] = "/redfish/v1/UpdateService/"
-                                              "FirmwareInventory/" +
-                                              swId;
+                        member["@odata.id"] = crow::utility::urlFromPieces(
+                            "redfish", "v1", "UpdateService",
+                            "FirmwareInventory", swId);
                         softwareImageMembers.push_back(std::move(member));
                         aResp->res
                             .jsonValue["Links"]["SoftwareImages@odata.count"] =
@@ -210,9 +211,9 @@
                         {
                             nlohmann::json::object_t runningMember;
                             runningMember["@odata.id"] =
-                                "/redfish/v1/UpdateService/"
-                                "FirmwareInventory/" +
-                                swId;
+                                crow::utility::urlFromPieces(
+                                    "redfish", "v1", "UpdateService",
+                                    "FirmwareInventory", swId);
                             // Create the link to the running image
                             aResp->res
                                 .jsonValue["Links"]["ActiveSoftwareImage"] =
diff --git a/redfish-core/lib/cable.hpp b/redfish-core/lib/cable.hpp
index 51eca27..0fc36b4 100644
--- a/redfish-core/lib/cable.hpp
+++ b/redfish-core/lib/cable.hpp
@@ -151,7 +151,8 @@
 
                 asyncResp->res.jsonValue["@odata.type"] = "#Cable.v1_0_0.Cable";
                 asyncResp->res.jsonValue["@odata.id"] =
-                    "/redfish/v1/Cables/" + cableId;
+                    crow::utility::urlFromPieces("redfish", "v1", "Cables",
+                                                 cableId);
                 asyncResp->res.jsonValue["Id"] = cableId;
                 asyncResp->res.jsonValue["Name"] = "Cable";
 
diff --git a/redfish-core/lib/chassis.hpp b/redfish-core/lib/chassis.hpp
index 5489351..4db6719 100644
--- a/redfish-core/lib/chassis.hpp
+++ b/redfish-core/lib/chassis.hpp
@@ -274,16 +274,21 @@
             asyncResp->res.jsonValue["@odata.type"] =
                 "#Chassis.v1_16_0.Chassis";
             asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Chassis/" + chassisId;
+                crow::utility::urlFromPieces("redfish", "v1", "Chassis",
+                                             chassisId);
             asyncResp->res.jsonValue["Name"] = "Chassis Collection";
             asyncResp->res.jsonValue["ChassisType"] = "RackMount";
             asyncResp->res.jsonValue["Actions"]["#Chassis.Reset"]["target"] =
-                "/redfish/v1/Chassis/" + chassisId + "/Actions/Chassis.Reset";
+                crow::utility::urlFromPieces("redfish", "v1", "Chassis",
+                                             chassisId, "Actions",
+                                             "Chassis.Reset");
             asyncResp->res
                 .jsonValue["Actions"]["#Chassis.Reset"]["@Redfish.ActionInfo"] =
-                "/redfish/v1/Chassis/" + chassisId + "/ResetActionInfo";
+                crow::utility::urlFromPieces("redfish", "v1", "Chassis",
+                                             chassisId, "ResetActionInfo");
             asyncResp->res.jsonValue["PCIeDevices"]["@odata.id"] =
-                "/redfish/v1/Systems/system/PCIeDevices";
+                crow::utility::urlFromPieces("redfish", "v1", "Systems",
+                                             "system", "PCIeDevices");
 
             sdbusplus::asio::getProperty<std::vector<std::string>>(
                 *crow::connections::systemBus,
@@ -398,10 +403,12 @@
                 asyncResp->res.jsonValue["Id"] = chassisId;
 #ifdef BMCWEB_ALLOW_DEPRECATED_POWER_THERMAL
                 asyncResp->res.jsonValue["Thermal"]["@odata.id"] =
-                    "/redfish/v1/Chassis/" + chassisId + "/Thermal";
+                    crow::utility::urlFromPieces("redfish", "v1", "Chassis",
+                                                 chassisId, "Thermal");
                 // Power object
                 asyncResp->res.jsonValue["Power"]["@odata.id"] =
-                    "/redfish/v1/Chassis/" + chassisId + "/Power";
+                    crow::utility::urlFromPieces("redfish", "v1", "Chassis",
+                                                 chassisId, "Power");
 #endif
 #ifdef BMCWEB_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM
                 asyncResp->res.jsonValue["ThermalSubsystem"]["@odata.id"] =
@@ -417,7 +424,8 @@
 #endif
                 // SensorCollection
                 asyncResp->res.jsonValue["Sensors"]["@odata.id"] =
-                    "/redfish/v1/Chassis/" + chassisId + "/Sensors";
+                    crow::utility::urlFromPieces("redfish", "v1", "Chassis",
+                                                 chassisId, "Sensors");
                 asyncResp->res.jsonValue["Status"]["State"] = "Enabled";
 
                 nlohmann::json::array_t computerSystems;
@@ -707,8 +715,8 @@
         return;
     }
     asyncResp->res.jsonValue["@odata.type"] = "#ActionInfo.v1_1_2.ActionInfo";
-    asyncResp->res.jsonValue["@odata.id"] =
-        "/redfish/v1/Chassis/" + chassisId + "/ResetActionInfo";
+    asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+        "redfish", "v1", "Chassis", chassisId, "ResetActionInfo");
     asyncResp->res.jsonValue["Name"] = "Reset Action Info";
 
     asyncResp->res.jsonValue["Id"] = "ResetActionInfo";
diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index e0fcb2e..8cdb7e0 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -1636,8 +1636,8 @@
 
     nlohmann::json& jsonResponse = asyncResp->res.jsonValue;
     jsonResponse["Id"] = ifaceId;
-    jsonResponse["@odata.id"] =
-        "/redfish/v1/Managers/bmc/EthernetInterfaces/" + ifaceId;
+    jsonResponse["@odata.id"] = crow::utility::urlFromPieces(
+        "redfish", "v1", "Managers", "bmc", "EthernetInterfaces", ifaceId);
     jsonResponse["InterfaceEnabled"] = ethData.nicEnabled;
 
     auto health = std::make_shared<HealthPopulate>(asyncResp);
@@ -1810,9 +1810,9 @@
                 if (found == std::string::npos)
                 {
                     nlohmann::json::object_t iface;
-                    iface["@odata.id"] =
-                        "/redfish/v1/Managers/bmc/EthernetInterfaces/" +
-                        ifaceItem;
+                    iface["@odata.id"] = crow::utility::urlFromPieces(
+                        "redfish", "v1", "Managers", "bmc",
+                        "EthernetInterfaces", ifaceItem);
                     ifaceArray.push_back(std::move(iface));
                 }
             }
@@ -2044,8 +2044,9 @@
             {
                 asyncResp->res.jsonValue["Id"] = ifaceId;
                 asyncResp->res.jsonValue["@odata.id"] =
-                    "/redfish/v1/Managers/bmc/EthernetInterfaces/" +
-                    parentIfaceId + "/VLANs/" + ifaceId;
+                    crow::utility::urlFromPieces(
+                        "redfish", "v1", "Managers", "bmc",
+                        "EthernetInterfaces", parentIfaceId, "VLANs", ifaceId);
 
                 asyncResp->res.jsonValue["VLANEnable"] = ethData.nicEnabled;
                 asyncResp->res.jsonValue["VLANId"] = *ethData.vlanId;
@@ -2230,13 +2231,11 @@
             {
                 if (ifaceItem.starts_with(rootInterfaceName + "_"))
                 {
-                    std::string path =
-                        "/redfish/v1/Managers/bmc/EthernetInterfaces/";
-                    path += rootInterfaceName;
-                    path += "/VLANs/";
-                    path += ifaceItem;
                     nlohmann::json::object_t iface;
-                    iface["@odata.id"] = std::move(path);
+                    iface["@odata.id"] = crow::utility::urlFromPieces(
+                        "redfish", "v1", "Managers", "bmc",
+                        "EthernetInterfaces", rootInterfaceName, "VLANs",
+                        ifaceItem);
                     ifaceArray.push_back(std::move(iface));
                 }
             }
@@ -2244,8 +2243,9 @@
             asyncResp->res.jsonValue["Members@odata.count"] = ifaceArray.size();
             asyncResp->res.jsonValue["Members"] = std::move(ifaceArray);
             asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Managers/bmc/EthernetInterfaces/" +
-                rootInterfaceName + "/VLANs";
+                crow::utility::urlFromPieces("redfish", "v1", "Managers", "bmc",
+                                             "EthernetInterfaces",
+                                             rootInterfaceName, "VLANs");
         });
         });
 
diff --git a/redfish-core/lib/hypervisor_system.hpp b/redfish-core/lib/hypervisor_system.hpp
index b558030..0fd603f 100644
--- a/redfish-core/lib/hypervisor_system.hpp
+++ b/redfish-core/lib/hypervisor_system.hpp
@@ -488,7 +488,8 @@
 {
     jsonResponse["Id"] = ifaceId;
     jsonResponse["@odata.id"] =
-        "/redfish/v1/Systems/hypervisor/EthernetInterfaces/" + ifaceId;
+        crow::utility::urlFromPieces("redfish", "v1", "Systems", "hypervisor",
+                                     "EthernetInterfaces", ifaceId);
     jsonResponse["InterfaceEnabled"] = true;
     jsonResponse["MACAddress"] = ethData.macAddress;
 
@@ -823,8 +824,9 @@
                     continue;
                 }
                 nlohmann::json::object_t ethIface;
-                ethIface["@odata.id"] =
-                    "/redfish/v1/Systems/hypervisor/EthernetInterfaces/" + name;
+                ethIface["@odata.id"] = crow::utility::urlFromPieces(
+                    "redfish", "v1", "Systems", "hypervisor",
+                    "EthernetInterfaces", name);
                 ifaceArray.push_back(std::move(ethIface));
             }
             asyncResp->res.jsonValue["Members@odata.count"] = ifaceArray.size();
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index b807bc4..bb9552a 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -1295,8 +1295,9 @@
 
     // Fill in the log entry with the gathered data
     logEntryJson["@odata.type"] = "#LogEntry.v1_9_0.LogEntry";
-    logEntryJson["@odata.id"] =
-        "/redfish/v1/Systems/system/LogServices/EventLog/Entries/" + logEntryID;
+    logEntryJson["@odata.id"] = crow::utility::urlFromPieces(
+        "redfish", "v1", "Systems", "system", "LogServices", "EventLog",
+        "Entries", logEntryID);
     logEntryJson["Name"] = "System Event Log Entry";
     logEntryJson["Id"] = logEntryID;
     logEntryJson["Message"] = std::move(msg);
@@ -1629,9 +1630,9 @@
                 entriesArray.push_back({});
                 nlohmann::json& thisEntry = entriesArray.back();
                 thisEntry["@odata.type"] = "#LogEntry.v1_9_0.LogEntry";
-                thisEntry["@odata.id"] =
-                    "/redfish/v1/Systems/system/LogServices/EventLog/Entries/" +
-                    std::to_string(*id);
+                thisEntry["@odata.id"] = crow::utility::urlFromPieces(
+                    "redfish", "v1", "Systems", "system", "LogServices",
+                    "EventLog", "Entries", std::to_string(*id));
                 thisEntry["Name"] = "System Event Log Entry";
                 thisEntry["Id"] = std::to_string(*id);
                 thisEntry["Message"] = *message;
@@ -1750,8 +1751,9 @@
             asyncResp->res.jsonValue["@odata.type"] =
                 "#LogEntry.v1_9_0.LogEntry";
             asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Systems/system/LogServices/EventLog/Entries/" +
-                std::to_string(*id);
+                crow::utility::urlFromPieces(
+                    "redfish", "v1", "Systems", "system", "LogServices",
+                    "EventLog", "Entries", std::to_string(*id));
             asyncResp->res.jsonValue["Name"] = "System Event Log Entry";
             asyncResp->res.jsonValue["Id"] = std::to_string(*id);
             asyncResp->res.jsonValue["Message"] = *message;
@@ -2047,9 +2049,9 @@
 {
     // Fill in the log entry with the gathered data.
     logEntryJson["@odata.type"] = "#LogEntry.v1_9_0.LogEntry";
-    logEntryJson["@odata.id"] =
-        "/redfish/v1/Systems/system/LogServices/HostLogger/Entries/" +
-        logEntryID;
+    logEntryJson["@odata.id"] = crow::utility::urlFromPieces(
+        "redfish", "v1", "Systems", "system", "LogServices", "HostLogger",
+        "Entries", logEntryID);
     logEntryJson["Name"] = "Host Logger Entry";
     logEntryJson["Id"] = logEntryID;
     logEntryJson["Message"] = msg;
@@ -2397,9 +2399,9 @@
 
     // Fill in the log entry with the gathered data
     bmcJournalLogEntryJson["@odata.type"] = "#LogEntry.v1_9_0.LogEntry";
-    bmcJournalLogEntryJson["@odata.id"] =
-        "/redfish/v1/Managers/bmc/LogServices/Journal/Entries/" +
-        bmcJournalLogEntryID;
+    bmcJournalLogEntryJson["@odata.id"] = crow::utility::urlFromPieces(
+        "redfish", "v1", "Managers", "bmc", "LogServices", "Journal", "Entries",
+        bmcJournalLogEntryID);
     bmcJournalLogEntryJson["Name"] = "BMC Journal Entry";
     bmcJournalLogEntryJson["Id"] = bmcJournalLogEntryID;
     bmcJournalLogEntryJson["Message"] = std::move(message);
@@ -3018,7 +3020,8 @@
             redfishDateTimeOffset.second;
 
         asyncResp->res.jsonValue["Entries"]["@odata.id"] =
-            "/redfish/v1/Systems/system/LogServices/Crashdump/Entries";
+            crow::utility::urlFromPieces("redfish", "v1", "Systems", "system",
+                                         "LogServices", "Crashdump", "Entries");
         asyncResp->res.jsonValue["Actions"]["#LogService.ClearLog"]["target"] =
             "/redfish/v1/Systems/system/LogServices/Crashdump/Actions/LogService.ClearLog";
         asyncResp->res.jsonValue["Actions"]["#LogService.CollectDiagnosticData"]
@@ -3102,8 +3105,9 @@
             logID + "/" + filename;
         nlohmann::json::object_t logEntry;
         logEntry["@odata.type"] = "#LogEntry.v1_9_0.LogEntry";
-        logEntry["@odata.id"] =
-            "/redfish/v1/Systems/system/LogServices/Crashdump/Entries/" + logID;
+        logEntry["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "Systems", "system", "LogServices", "Crashdump",
+            "Entries", logID);
         logEntry["Name"] = "CPU Crashdump";
         logEntry["Id"] = logID;
         logEntry["EntryType"] = "Oem";
@@ -3741,9 +3745,9 @@
         // Format entry
         nlohmann::json::object_t bmcLogEntry;
         bmcLogEntry["@odata.type"] = "#LogEntry.v1_9_0.LogEntry";
-        bmcLogEntry["@odata.id"] =
-            "/redfish/v1/Systems/system/LogServices/PostCodes/Entries/" +
-            postcodeEntryID;
+        bmcLogEntry["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "Systems", "system", "LogServices", "PostCodes",
+            "Entries", postcodeEntryID);
         bmcLogEntry["Name"] = "POST Code Log Entry";
         bmcLogEntry["Id"] = postcodeEntryID;
         bmcLogEntry["Message"] = std::move(msg);
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index 376f70c..9da1be0 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -394,6 +394,8 @@
                     }
                 }
 
+                boost::urls::url url = crow::utility::urlFromPieces(
+                    "redfish", "v1", "Managers", "bmc");
                 if (intfPair.first == pidZoneConfigurationIface)
                 {
                     std::string chassis;
@@ -403,11 +405,12 @@
                         chassis = "#IllegalValue";
                     }
                     nlohmann::json& zone = zones[name];
-                    zone["Chassis"]["@odata.id"] =
-                        "/redfish/v1/Chassis/" + chassis;
-                    zone["@odata.id"] =
-                        "/redfish/v1/Managers/bmc#/Oem/OpenBmc/Fan/FanZones/" +
-                        name;
+                    zone["Chassis"]["@odata.id"] = crow::utility::urlFromPieces(
+                        "redfish", "v1", "Chassis", chassis);
+                    url.set_fragment(
+                        ("/Oem/OpenBmc/Fan/FanZones"_json_pointer / name)
+                            .to_string());
+                    zone["@odata.id"] = std::move(url);
                     zone["@odata.type"] = "#OemManager.FanZone";
                     config = &zone;
                 }
@@ -423,10 +426,11 @@
 
                     nlohmann::json& controller = stepwise[name];
                     config = &controller;
-
-                    controller["@odata.id"] =
-                        "/redfish/v1/Managers/bmc#/Oem/OpenBmc/Fan/StepwiseControllers/" +
-                        name;
+                    url.set_fragment(
+                        ("/Oem/OpenBmc/Fan/StepwiseControllers"_json_pointer /
+                         name)
+                            .to_string());
+                    controller["@odata.id"] = std::move(url);
                     controller["@odata.type"] =
                         "#OemManager.StepwiseController";
 
@@ -448,16 +452,20 @@
                     config = &element;
                     if (isFan)
                     {
-                        element["@odata.id"] =
-                            "/redfish/v1/Managers/bmc#/Oem/OpenBmc/Fan/FanControllers/" +
-                            name;
+                        url.set_fragment(
+                            ("/Oem/OpenBmc/Fan/FanControllers"_json_pointer /
+                             name)
+                                .to_string());
+                        element["@odata.id"] = std::move(url);
                         element["@odata.type"] = "#OemManager.FanController";
                     }
                     else
                     {
-                        element["@odata.id"] =
-                            "/redfish/v1/Managers/bmc#/Oem/OpenBmc/Fan/PidControllers/" +
-                            name;
+                        url.set_fragment(
+                            ("/Oem/OpenBmc/Fan/PidControllers"_json_pointer /
+                             name)
+                                .to_string());
+                        element["@odata.id"] = std::move(url);
                         element["@odata.type"] = "#OemManager.PidController";
                     }
                 }
@@ -580,9 +588,14 @@
                             {
                                 dbus::utility::escapePathForDbus(itemCopy);
                                 nlohmann::json::object_t input;
-                                input["@odata.id"] =
-                                    "/redfish/v1/Managers/bmc#/Oem/OpenBmc/Fan/FanZones/" +
-                                    itemCopy;
+                                boost::urls::url managerUrl =
+                                    crow::utility::urlFromPieces(
+                                        "redfish", "v1", "Managers", "bmc");
+                                managerUrl.set_fragment(
+                                    ("/Oem/OpenBmc/Fan/FanZones"_json_pointer /
+                                     itemCopy)
+                                        .to_string());
+                                input["@odata.id"] = std::move(managerUrl);
                                 data.push_back(std::move(input));
                             }
                         }
@@ -2043,12 +2056,14 @@
             aRsp->res.jsonValue["Links"]["ManagerForChassis@odata.count"] = 1;
             nlohmann::json::array_t managerForChassis;
             nlohmann::json::object_t managerObj;
-            managerObj["@odata.id"] = "/redfish/v1/Chassis/" + chassisId;
+            boost::urls::url chassiUrl = crow::utility::urlFromPieces(
+                "redfish", "v1", "Chassis", chassisId);
+            managerObj["@odata.id"] = chassiUrl;
             managerForChassis.push_back(std::move(managerObj));
             aRsp->res.jsonValue["Links"]["ManagerForChassis"] =
                 std::move(managerForChassis);
             aRsp->res.jsonValue["Links"]["ManagerInChassis"]["@odata.id"] =
-                "/redfish/v1/Chassis/" + chassisId;
+                chassiUrl;
         });
 
         static bool started = false;
diff --git a/redfish-core/lib/memory.hpp b/redfish-core/lib/memory.hpp
index e55eded..6e77816 100644
--- a/redfish-core/lib/memory.hpp
+++ b/redfish-core/lib/memory.hpp
@@ -760,8 +760,8 @@
         }
         // Set @odata only if object is found
         aResp->res.jsonValue["@odata.type"] = "#Memory.v1_11_0.Memory";
-        aResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/Systems/system/Memory/" + dimmId;
+        aResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "Systems", "system", "Memory", dimmId);
         return;
         });
 }
diff --git a/redfish-core/lib/message_registries.hpp b/redfish-core/lib/message_registries.hpp
index 41e7e93..41464bc 100644
--- a/redfish-core/lib/message_registries.hpp
+++ b/redfish-core/lib/message_registries.hpp
@@ -111,7 +111,7 @@
     }
 
     asyncResp->res.jsonValue["@odata.id"] =
-        "/redfish/v1/Registries/" + registry;
+        crow::utility::urlFromPieces("redfish", "v1", "Registries", registry);
     asyncResp->res.jsonValue["@odata.type"] =
         "#MessageRegistryFile.v1_1_0.MessageRegistryFile";
     asyncResp->res.jsonValue["Name"] = registry + " Message Registry File";
diff --git a/redfish-core/lib/pcie.hpp b/redfish-core/lib/pcie.hpp
index 77afd0a..5332a39 100644
--- a/redfish-core/lib/pcie.hpp
+++ b/redfish-core/lib/pcie.hpp
@@ -67,8 +67,8 @@
                 continue;
             }
             nlohmann::json::object_t pcieDevice;
-            pcieDevice["@odata.id"] =
-                "/redfish/v1/Systems/system/PCIeDevices/" + devName;
+            pcieDevice["@odata.id"] = crow::utility::urlFromPieces(
+                "redfish", "v1", "Systems", "system", "PCIeDevices", devName);
             pcieDeviceList.push_back(std::move(pcieDevice));
         }
         asyncResp->res.jsonValue[name + "@odata.count"] = pcieDeviceList.size();
@@ -242,13 +242,15 @@
             asyncResp->res.jsonValue["@odata.type"] =
                 "#PCIeDevice.v1_4_0.PCIeDevice";
             asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Systems/system/PCIeDevices/" + device;
+                crow::utility::urlFromPieces("redfish", "v1", "Systems",
+                                             "system", "PCIeDevices", device);
             asyncResp->res.jsonValue["Name"] = "PCIe Device";
             asyncResp->res.jsonValue["Id"] = device;
 
             asyncResp->res.jsonValue["PCIeFunctions"]["@odata.id"] =
-                "/redfish/v1/Systems/system/PCIeDevices/" + device +
-                "/PCIeFunctions";
+                crow::utility::urlFromPieces("redfish", "v1", "Systems",
+                                             "system", "PCIeDevices", device,
+                                             "PCIeFunctions");
         };
         std::string escapedPath = std::string(pciePath) + "/" + device;
         dbus::utility::escapePathForDbus(escapedPath);
@@ -277,9 +279,9 @@
 
         asyncResp->res.jsonValue["@odata.type"] =
             "#PCIeFunctionCollection.PCIeFunctionCollection";
-        asyncResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/Systems/system/PCIeDevices/" + device +
-            "/PCIeFunctions";
+        asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "Systems", "system", "PCIeDevices", device,
+            "PCIeFunctions");
         asyncResp->res.jsonValue["Name"] = "PCIe Function Collection";
         asyncResp->res.jsonValue["Description"] =
             "Collection of PCIe Functions for PCIe Device " + device;
@@ -330,9 +332,9 @@
                     continue;
                 }
                 nlohmann::json::object_t pcieFunction;
-                pcieFunction["@odata.id"] =
-                    "/redfish/v1/Systems/system/PCIeDevices/" + device +
-                    "/PCIeFunctions/" + std::to_string(functionNum);
+                pcieFunction["@odata.id"] = crow::utility::urlFromPieces(
+                    "redfish", "v1", "Systems", "system", "PCIeDevices", device,
+                    "PCIeFunctions", std::to_string(functionNum));
                 pcieFunctionList.push_back(std::move(pcieFunction));
             }
             asyncResp->res.jsonValue["Members@odata.count"] =
@@ -406,13 +408,15 @@
             asyncResp->res.jsonValue["@odata.type"] =
                 "#PCIeFunction.v1_2_0.PCIeFunction";
             asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Systems/system/PCIeDevices/" + device +
-                "/PCIeFunctions/" + function;
+                crow::utility::urlFromPieces("redfish", "v1", "Systems",
+                                             "system", "PCIeDevices", device,
+                                             "PCIeFunctions", function);
             asyncResp->res.jsonValue["Name"] = "PCIe Function";
             asyncResp->res.jsonValue["Id"] = function;
             asyncResp->res.jsonValue["FunctionId"] = std::stoi(function);
             asyncResp->res.jsonValue["Links"]["PCIeDevice"]["@odata.id"] =
-                "/redfish/v1/Systems/system/PCIeDevices/" + device;
+                crow::utility::urlFromPieces("redfish", "v1", "Systems",
+                                             "system", "PCIeDevices", device);
 
             for (const auto& property : pcieDevProperties)
             {
diff --git a/redfish-core/lib/processor.hpp b/redfish-core/lib/processor.hpp
index 1ac29ff..8b1bfa9 100644
--- a/redfish-core/lib/processor.hpp
+++ b/redfish-core/lib/processor.hpp
@@ -551,10 +551,10 @@
         if (appliedConfig != nullptr)
         {
             const std::string& dbusPath = appliedConfig->str;
-            std::string uri = "/redfish/v1/Systems/system/Processors/" + cpuId +
-                              "/OperatingConfigs";
             nlohmann::json::object_t operatingConfig;
-            operatingConfig["@odata.id"] = uri;
+            operatingConfig["@odata.id"] = crow::utility::urlFromPieces(
+                "redfish", "v1", "Systems", "system", "Processors", cpuId,
+                "OperatingConfigs");
             json["OperatingConfigs"] = std::move(operatingConfig);
 
             // Reuse the D-Bus config object name for the Redfish
@@ -569,10 +569,10 @@
                 messages::internalError(aResp->res);
                 return;
             }
-            uri += '/';
-            uri += dbusPath.substr(baseNamePos + 1);
             nlohmann::json::object_t appliedOperatingConfig;
-            appliedOperatingConfig["@odata.id"] = uri;
+            appliedOperatingConfig["@odata.id"] = crow::utility::urlFromPieces(
+                "redfish", "v1", "Systems", "system", "Processors", cpuId,
+                "OperatingConfigs", dbusPath.substr(baseNamePos + 1));
             json["AppliedOperatingConfig"] = std::move(appliedOperatingConfig);
 
             // Once we found the current applied config, queue another
@@ -1256,8 +1256,8 @@
             "</redfish/v1/JsonSchemas/Processor/Processor.json>; rel=describedby");
         asyncResp->res.jsonValue["@odata.type"] =
             "#Processor.v1_11_0.Processor";
-        asyncResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/Systems/system/Processors/" + processorId;
+        asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "Systems", "system", "Processors", processorId);
 
         getProcessorObject(
             asyncResp, processorId,
diff --git a/redfish-core/lib/redfish_sessions.hpp b/redfish-core/lib/redfish_sessions.hpp
index 5ae6674..9dcb873 100644
--- a/redfish-core/lib/redfish_sessions.hpp
+++ b/redfish-core/lib/redfish_sessions.hpp
@@ -31,8 +31,8 @@
 {
     res.jsonValue["Id"] = session.uniqueId;
     res.jsonValue["UserName"] = session.username;
-    res.jsonValue["@odata.id"] =
-        "/redfish/v1/SessionService/Sessions/" + session.uniqueId;
+    res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+        "redfish", "SessionService", "Sessions", session.uniqueId);
     res.jsonValue["@odata.type"] = "#Session.v1_5_0.Session";
     res.jsonValue["Name"] = "User Session";
     res.jsonValue["Description"] = "Manager User Session";
@@ -127,7 +127,8 @@
     for (const std::string* uid : sessionIds)
     {
         nlohmann::json::object_t session;
-        session["@odata.id"] = "/redfish/v1/SessionService/Sessions/" + *uid;
+        session["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "SessionService", "Sessions", *uid);
         ret.push_back(std::move(session));
     }
     return ret;
diff --git a/redfish-core/lib/roles.hpp b/redfish-core/lib/roles.hpp
index 413cd8c..fe9110c 100644
--- a/redfish-core/lib/roles.hpp
+++ b/redfish-core/lib/roles.hpp
@@ -93,8 +93,8 @@
         asyncResp->res.jsonValue["IsPredefined"] = true;
         asyncResp->res.jsonValue["Id"] = roleId;
         asyncResp->res.jsonValue["RoleId"] = roleId;
-        asyncResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/AccountService/Roles/" + roleId;
+        asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "AccountService", "Roles", roleId);
         asyncResp->res.jsonValue["AssignedPrivileges"] = std::move(privArray);
         });
 }
@@ -137,8 +137,8 @@
                 if (!role.empty())
                 {
                     nlohmann::json::object_t member;
-                    member["@odata.id"] =
-                        "/redfish/v1/AccountService/Roles/" + role;
+                    member["@odata.id"] = crow::utility::urlFromPieces(
+                        "redfish", "v1", "AccountService", "Roles", role);
                     memberArray.push_back(std::move(member));
                 }
             }
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index e6d7a7a..3ff4842 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -559,8 +559,8 @@
         }
         populateChassisNode(asyncResp->res.jsonValue, chassisSubNode);
 
-        asyncResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/Chassis/" + chassisIdStr + "/" + chassisSubNode;
+        asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "Chassis", chassisIdStr, chassisSubNode);
 
         // Get the list of all sensors for this Chassis element
         std::string sensorPath = *chassisPath + "/all_sensors";
@@ -1128,10 +1128,12 @@
                                                 .jsonValue["Redundancy"];
 
                     nlohmann::json::object_t redundancy;
-                    redundancy["@odata.id"] =
-                        "/redfish/v1/Chassis/" + sensorsAsyncResp->chassisId +
-                        "/" + sensorsAsyncResp->chassisSubNode +
-                        "#/Redundancy/" + std::to_string(jResp.size());
+                    boost::urls::url url = crow::utility::urlFromPieces(
+                        "redfish", "v1", "Chassis", sensorsAsyncResp->chassisId,
+                        sensorsAsyncResp->chassisSubNode);
+                    url.set_fragment(("/Redundancy"_json_pointer / jResp.size())
+                                         .to_string());
+                    redundancy["@odata.id"] = std::move(url);
                     redundancy["@odata.type"] = "#Redundancy.v1_3_2.Redundancy";
                     redundancy["MinNumNeeded"] = minNumNeeded;
                     redundancy["MemberId"] = name;
@@ -1179,7 +1181,7 @@
                 std::string* value = odata->get_ptr<std::string*>();
                 if (value != nullptr)
                 {
-                    *value += std::to_string(count);
+                    *value += "/" + std::to_string(count);
                     count++;
                     sensorsAsyncResp->updateUri(sensorJson["Name"], *value);
                 }
@@ -2199,8 +2201,10 @@
     // Add new PowerSupply object to JSON array
     powerSupplyArray.push_back({});
     nlohmann::json& powerSupply = powerSupplyArray.back();
-    powerSupply["@odata.id"] =
-        "/redfish/v1/Chassis/" + chassisId + "/Power#/PowerSupplies/";
+    boost::urls::url url = crow::utility::urlFromPieces(
+        "redfish", "v1", "Chassis", chassisId, "Power");
+    url.set_fragment(("/PowerSupplies"_json_pointer).to_string());
+    powerSupply["@odata.id"] = std::move(url);
     powerSupply["MemberId"] = inventoryItem.name;
     powerSupply["Name"] = boost::replace_all_copy(inventoryItem.name, "_", " ");
     powerSupply["Manufacturer"] = inventoryItem.manufacturer;
@@ -2383,11 +2387,13 @@
                             // PowerControl. Follows MemberId naming and
                             // naming in power.hpp.
                             nlohmann::json::object_t power;
-                            power["@odata.id"] =
-                                "/redfish/v1/Chassis/" +
-                                sensorsAsyncResp->chassisId + "/" +
-                                sensorsAsyncResp->chassisSubNode + "#/" +
-                                fieldName + "/0";
+                            boost::urls::url url = crow::utility::urlFromPieces(
+                                "redfish", "v1", "Chassis",
+                                sensorsAsyncResp->chassisId,
+                                sensorsAsyncResp->chassisSubNode);
+                            url.set_fragment((""_json_pointer / fieldName / "0")
+                                                 .to_string());
+                            power["@odata.id"] = std::move(url);
                             tempArray.push_back(std::move(power));
                         }
                         sensorJson = &(tempArray.back());
@@ -2423,11 +2429,13 @@
                     else
                     {
                         nlohmann::json::object_t member;
-                        member["@odata.id"] = "/redfish/v1/Chassis/" +
-                                              sensorsAsyncResp->chassisId +
-                                              "/" +
-                                              sensorsAsyncResp->chassisSubNode +
-                                              "#/" + fieldName + "/";
+                        boost::urls::url url = crow::utility::urlFromPieces(
+                            "redfish", "v1", "Chassis",
+                            sensorsAsyncResp->chassisId,
+                            sensorsAsyncResp->chassisSubNode);
+                        url.set_fragment(
+                            (""_json_pointer / fieldName).to_string());
+                        member["@odata.id"] = std::move(url);
                         tempArray.push_back(std::move(member));
                         sensorJson = &(tempArray.back());
                     }
diff --git a/redfish-core/lib/storage.hpp b/redfish-core/lib/storage.hpp
index 93911e5..88ced62 100644
--- a/redfish-core/lib/storage.hpp
+++ b/redfish-core/lib/storage.hpp
@@ -102,9 +102,9 @@
             }
 
             nlohmann::json::object_t driveJson;
-            driveJson["@odata.id"] =
-                "/redfish/v1/Systems/system/Storage/1/Drives/" +
-                object.filename();
+            driveJson["@odata.id"] = crow::utility::urlFromPieces(
+                "redfish", "v1", "Systems", "system", "Storage", "1", "Drives",
+                object.filename());
             driveArray.push_back(std::move(driveJson));
         }
 
@@ -158,8 +158,10 @@
             storageController["@odata.type"] =
                 "#Storage.v1_7_0.StorageController";
             storageController["@odata.id"] =
-                "/redfish/v1/Systems/system/Storage/1#/StorageControllers/" +
-                std::to_string(index);
+                crow::utility::urlFromPieces("redfish", "v1", "Systems",
+                                             "system", "Storage", "1")
+                    .set_fragment(("/StorageControllers"_json_pointer / index)
+                                      .to_string());
             storageController["Name"] = id;
             storageController["MemberId"] = id;
             storageController["Status"]["State"] = "Enabled";
@@ -607,7 +609,9 @@
 
             asyncResp->res.jsonValue["@odata.type"] = "#Drive.v1_7_0.Drive";
             asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Systems/system/Storage/1/Drives/" + driveId;
+                crow::utility::urlFromPieces("redfish", "v1", "Systems",
+                                             "system", "Storage", "1", "Drives",
+                                             driveId);
             asyncResp->res.jsonValue["Name"] = driveId;
             asyncResp->res.jsonValue["Id"] = driveId;
 
@@ -623,7 +627,8 @@
                 asyncResp, [](const std::string& chassisId,
                               const std::shared_ptr<bmcweb::AsyncResp>& aRsp) {
                     aRsp->res.jsonValue["Links"]["Chassis"]["@odata.id"] =
-                        "/redfish/v1/Chassis/" + chassisId;
+                        crow::utility::urlFromPieces("redfish", "v1", "Chassis",
+                                                     chassisId);
                 });
 
             // default it to Enabled
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index d6f4fba..06729fd 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -3000,7 +3000,8 @@
                             const std::shared_ptr<bmcweb::AsyncResp>& aRsp) {
             nlohmann::json::array_t chassisArray;
             nlohmann::json& chassis = chassisArray.emplace_back();
-            chassis["@odata.id"] = "/redfish/v1/Chassis/" + chassisId;
+            chassis["@odata.id"] = crow::utility::urlFromPieces(
+                "redfish", "v1", "Chassis", chassisId);
             aRsp->res.jsonValue["Links"]["Chassis"] = std::move(chassisArray);
         });
 
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index 950eac3..563f06f 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -409,8 +409,8 @@
         }
         asyncResp->res.jsonValue["TaskStatus"] = ptr->status;
         asyncResp->res.jsonValue["Messages"] = ptr->messages;
-        asyncResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/TaskService/Tasks/" + strParam;
+        asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "TaskService", "Tasks", strParam);
         if (!ptr->gave204)
         {
             asyncResp->res.jsonValue["TaskMonitor"] =
@@ -456,8 +456,9 @@
                 continue; // shouldn't be possible
             }
             nlohmann::json::object_t member;
-            member["@odata.id"] =
-                "redfish/v1/TaskService/Tasks/" + std::to_string(task->index);
+            member["@odata.id"] = crow::utility::urlFromPieces(
+                "redfish", "v1", "TaskService", "Tasks",
+                std::to_string(task->index));
             members.emplace_back(std::move(member));
         }
         });
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index cf5ac0d..c7b1593 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -786,8 +786,9 @@
 
                 nlohmann::json& members = asyncResp->res.jsonValue["Members"];
                 nlohmann::json::object_t member;
-                member["@odata.id"] =
-                    "/redfish/v1/UpdateService/FirmwareInventory/" + swId;
+                member["@odata.id"] = crow::utility::urlFromPieces(
+                    "redfish", "v1", "UpdateService", "FirmwareInventory",
+                    swId);
                 members.push_back(std::move(member));
                 asyncResp->res.jsonValue["Members@odata.count"] =
                     members.size();
@@ -909,8 +910,8 @@
         std::shared_ptr<std::string> swId =
             std::make_shared<std::string>(param);
 
-        asyncResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/UpdateService/FirmwareInventory/" + *swId;
+        asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "UpdateService", "FirmwareInventory", *swId);
 
         constexpr std::array<std::string_view, 1> interfaces = {
             "xyz.openbmc_project.Software.Version"};
diff --git a/test/http/utility_test.cpp b/test/http/utility_test.cpp
index 2e0c82e..957c13d 100644
--- a/test/http/utility_test.cpp
+++ b/test/http/utility_test.cpp
@@ -94,6 +94,24 @@
 
     url = urlFromPieces("/", "bad&tring");
     EXPECT_EQ(url.buffer(), "/%2F/bad&tring");
+
+    EXPECT_EQ(std::string_view(url.data(), url.size()), "/%2F/bad&tring");
+
+    url = urlFromPieces("my-user");
+    EXPECT_EQ(std::string_view(url.data(), url.size()), "/my-user");
+
+    url = urlFromPieces("my_user");
+    EXPECT_EQ(std::string_view(url.data(), url.size()), "/my_user");
+
+    url = urlFromPieces("my_93user");
+    EXPECT_EQ(std::string_view(url.data(), url.size()), "/my_93user");
+
+    // The following characters will be converted to ASCII number
+    // `[{]}\|"<>/?#%^
+    url =
+        urlFromPieces("~1234567890-_=+qwertyuiopasdfghjklzxcvbnm;:',.!@$&*()");
+    EXPECT_EQ(std::string_view(url.data(), url.size()),
+              "/~1234567890-_=+qwertyuiopasdfghjklzxcvbnm;:',.!@$&*()");
 }
 
 TEST(Utility, readUrlSegments)
